prefacio
Cada servidor solo ejecuta un sitio web, lo que a veces provoca un desperdicio de recursos. En este momento, la función de host virtual se puede usar para usar el servidor físico como múltiples "servidores virtuales"; dirección IP, nombre de dominio del host o número de puerto, proporcionando tecnología para múltiples sitios web para proporcionar servicios de acceso externo al mismo tiempo.
Sobre la base del experimento, Nginx debe instalarse primero. No importa qué método se utilice para instalarlo, el host virtual se puede configurar. Para obtener información sobre el servicio de instalación, consulte el artículo anterior "Implementación e instalación de instancias de servicio de Nginx" . .
Instálelo aquí compilando
servidor | IP | Atender |
---|---|---|
CentOS7 | 192.168.116.166 | nginx1.22.1 |
1. Compilar e instalar Nginx
Los pasos de instalación aquí son relativamente rápidos.Si Nginx ya ha sido instalado, omita este directorio directamente.
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar xf nginx-1.22.1.tar.gz
#安装所需依赖包
[root@localhost ~]# yum install openssl openssl-devel gcc -y
[root@localhost ~]# cd nginx-1.22.1
#配置需要到的组件
[root@localhost ~]#./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
[root@localhost nginx-1.22.1]# echo $?
0
#开始编译
[root@localhost nginx-1.22.1]# make && make install && echo "OK"
Nginx compila e instala muy rápido, y cuando ve OK en la pantalla, significa que se ha instalado.
Luego puede hacer una conexión suave para que el comando nginx se pueda usar en cualquier ruta.
[root@localhost nginx]# ln -sv sbin/nginx /usr/sbin/
"/usr/sbin/nginx" -> "sbin/nginx"
[root@localhost nginx]# ll /usr/sbin/nginx
lrwxrwxrwx. 1 root root 10 3月 28 15:45 /usr/sbin/nginx -> sbin/nginx
2. Configurar el host virtual
La configuración de un host virtual requiere agregar contenido al archivo de configuración de Nginx.
[root@localhost nginx]# ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
"/usr/sbin/nginx" -> "/usr/local/nginx/sbin/nginx"
[root@localhost nginx]# ll /usr/sbin/nginx
lrwxrwxrwx. 1 root root 27 3月 28 15:48 /usr/sbin/nginx -> /usr/local/nginx/sbin/nginx
Si no sabe dónde está el archivo de configuración, puede usar el comando de búsqueda para encontrarlo.
2.1 Parámetros del archivo de configuración
nginx consta de módulos, que están controlados por directivas especificadas en los archivos de configuración. Las instrucciones se dividen en instrucciones simples e instrucciones de bloque. Las directivas simples consisten en un nombre y parámetros, separados por espacios y terminados con un punto y coma ;
. Una directiva de bloque tiene la misma estructura que una directiva simple, pero termina {}
con un conjunto de directivas adicionales entre llaves en lugar de punto y coma. Si una directiva de bloque puede contener otras directivas entre llaves, se denomina contexto (ejemplos: eventos, http, servidor y ubicación).
A continuación, necesitaremos implementar hosts de sitios web virtuales, por lo que solo necesitamos conocer algunos.
server {
#http server块,用来配置监听端口和域名的地方
listen 80; #监听端口
server_name localhost; #服务器名称,url要访问的域名或IP
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#匹配url规则
root html; #网站网页存放路径
index index.html index.htm; #文件后缀,如果是php的后缀,可以在这里加上index.php
}
Si desea obtener más información, puede consultarlo en la documentación de nginx en el sitio web oficial: haga clic aquí
Luego, comenzaremos a configurarlo.
2.2 Acceso basado en puerto
El acceso al puerto es relativamente fácil, solo necesita modificar el puerto de escucha, primero creamos una ruta de directorio que luego se usará para almacenar el archivo index.html que se muestra en la página web.
[root@localhost nginx]# mkdir -p /data/html80 /data/html81
[root@localhost nginx]# echo "use 80 port to visit" > /data/html80/index.html
[root@localhost nginx]# echo "use 81 port to visit" > /data/html81/index.html
2.2.1 Modificar el archivo de configuración
Solo necesita modificar el puerto de configuración listen的80
, luego copiar server http
el módulo a la línea 80, cambiar el puerto 80 a 81; y necesita modificar la ruta del directorio de index.html en el archivo.
[root@localhost nginx]# vim /usr/local/nginx/conf/nginx.conf
35 server {
36 listen 80;
37 server_name 192.168.116.166;
38
39 #charset koi8-r;
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root /data/html80; #目录路径
45 index index.html index.htm;
46 }
80 server {
81 listen 81;
82 server_name 192.168.116.166;
83
84 #charset koi8-r;
85
86 #access_log logs/host.access.log main;
87
88 location / {
89 root /data/html81;
90 index index.html index.htm;
91 }
92 }
Nota: si desea escribir la información del módulo del servidor a mano, recuerde agregar un punto y coma después de cada línea para el contenido en el medio; de lo contrario, se informará un error.
El uso directo nginx -t
también puede saber si el archivo de configuración es incorrecto;
[root@localhost nginx]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Luego inicie el acceso a nginx. Tenga en cuenta que hice un enlace suave antes. Si el comando no se encuentra en este paso, puede hacer un enlace suave del comando y necesita usar la ruta completa.
ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Ingrese nginx directamente en la terminal para iniciar el servicio
[root@localhost nginx]# nginx
2.2.2 Efecto de Acceso
Use curl para acceder directamente en la terminal
[root@localhost nginx]# curl 192.168.116.166
use 80 port to visit
[root@localhost nginx]# curl 192.168.116.166:81
use 81 port to visit
Para acceder a la página web, debe desactivar el firewall y selinux antes de poder acceder con éxito.
2.3 Acceso basado en IP
Según el acceso IP, se requieren varias IP. En la máquina física, debe solicitar una IP de red externa. Por supuesto, estamos usando vmware ahora, por lo que agregar una IP temporal se puede usar para experimentos.
[root@localhost nginx]# ifconfig ens32:0 192.168.116.167/24
[root@localhost nginx]# hostname -I
192.168.116.166 192.168.116.167 192.168.122.1
El archivo de directorio al que se debe acceder se recrea aquí;
[root@localhost nginx]# mkdir -p /data/html166 /data/html167
[root@localhost nginx]# echo "<h1>this is ip 166</h1> " > /data/html166/index.html
[root@localhost nginx]# echo "<h1>this is ip 167</h1> " > /data/html167/index.html
2.3.1 Modificar archivo de configuración
La parte que debe modificarse según el acceso de IP es que, server_name
debido a que es una IP diferente, debe agregar un módulo de servidor y escribir server_name
otra IP en él. location
La ruta de acceso a la URL bajo la regla también debe modificarse al archivo de directorio creado anteriormente.
[root@localhost nginx]# vim /usr/local/nginx/conf/nginx.conf
35 server {
36 listen 80;
37 server_name 192.168.116.166;
38
39 #charset koi8-r;
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root /data/html166;
45 index index.html index.htm;
46 }
80 server {
81 listen 80;
82 server_name 192.168.116.167;
83
84 #charset koi8-r;
85
86 #access_log logs/host.access.log main;
87
88 location / {
89 root /data/html167;
90 index index.html index.htm;
91 }
92 }
Después de la modificación, todavía se usa nginx -t
para verificar si el archivo tiene información de error.
[root@localhost nginx]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
reiniciar servicio
[root@localhost nginx]# nginx -s reload
2.3.2 Acceder a los resultados
Accede a la IP en la terminal
[root@localhost nginx]# curl 192.168.116.166
<h1>this is ip 166</h1>
[root@localhost nginx]# curl 192.168.116.167
<h1>this is ip 167</h1>
Visita en la web
2.4 Acceso basado en nombre de dominio
Según el acceso del nombre de dominio, el nombre de dominio debe resolverse primero. Dado que está en la máquina virtual, se resuelve directamente en la intranet aquí.
[root@localhost nginx]# vim /etc/hosts
[root@localhost nginx]# tail -2 !$
tail -2 /etc/hosts
192.168.116.166 www.itwhoami.top
192.168.116.166 blog.itwhoami.top
Después de analizar, cree un nuevo directorio aquí
[root@localhost nginx]# mkdir /data/html_www/ /data/html_blog/
[root@localhost nginx]# echo "this is www index" > /data/html_www/index.php
[root@localhost nginx]# echo "this is blog index" > /data/html_blog/index.php
2.4.1 Modificar archivo de configuración
Es necesario modificar el acceso basado en el nombre de dominio server_name
, location规则的root
la ruta. `
35 server {
36 listen 80;
37 server_name www.itwhoami.top;
38
39 #charset koi8-r;
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root /data/html_www;
45 index index.php index.html index.htm;
46 }
80 server {
81 listen 80;
82 server_name blog.itwhoami.top;
83
84 #charset koi8-r;
85
86 #access_log logs/host.access.log main;
87
88 location / {
89 root /data/html_blog;
90 index index.php index.html index.htm;
91 }
92 }
Usar de nuevo nginx -t
para ver el archivo de configuración
[root@localhost nginx]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Reinicie el servicio nginx
[root@localhost nginx]# nginx -s reload
A veces, reiniciar no tiene efecto, también puede cerrar directamente el servicio y luego volver a abrirlo.
[root@localhost nginx]# nginx -s stop
[root@localhost nginx]# nginx
2.4.2 Acceder a los resultados
acceso en terminal
[root@localhost nginx]# curl www.itwhoami.top
this is www index
[root@localhost nginx]# curl blog.itwhoami.top
^C
[root@localhost nginx]# vim /etc/hosts
[root@localhost nginx]# curl blog.itwhoami.top
this is blog index
Al acceder a la página web, no se puede acceder desde el servidor local aquí, y debe accederse desde el Firefox virtual.
Para la página de PHP, Firefox la descarga por defecto y podemos verla directamente en el archivo.
Resumir
Los tres hosts virtuales se han configurado aquí, lo cual es bastante interesante. También puedes practicarlo tú mismo. Si crees que el contenido está bien, puedes darle me gusta y seguirlo.