prefácio
Cada servidor executa apenas um site, o que às vezes causa desperdício de recursos. Neste momento, a função de host virtual pode ser usada para usar o servidor físico como vários "servidores virtuais"; endereço IP, nome de domínio do host ou número da porta, fornecendo tecnologia para vários sites fornecerem serviços de acesso externo ao mesmo tempo.
Com base na experiência, o Nginx precisa ser instalado primeiro. Independentemente do método usado para instalá-lo, o host virtual pode ser configurado. Para o serviço de instalação, consulte o artigo anterior "Implantando e instalando instâncias de serviço Nginx " .
Instale-o aqui compilando
servidor | IP | Servir |
---|---|---|
CentOS7 | 192.168.116.166 | nginx1.22.1 |
1. Compile e instale o Nginx
As etapas de instalação aqui são relativamente rápidas. Se o Nginx já tiver sido instalado, pule este diretório diretamente.
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"
O Nginx compila e instala muito rapidamente, e quando você vê OK na tela, significa que ele foi instalado.
Em seguida, você pode fazer uma conexão suave para que o comando nginx possa ser usado em qualquer caminho.
[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. Configure o host virtual
Configurar um host virtual requer adicionar conteúdo ao arquivo de configuração 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
Se você não sabe onde está o arquivo de configuração, pode usar o comando find para localizá-lo.
2.1 Parâmetros do arquivo de configuração
nginx consiste em módulos, que são controlados por diretivas especificadas em arquivos de configuração. As instruções são divididas em instruções simples e instruções de bloco. Diretivas simples consistem em um nome e parâmetros, separados por espaços e ;
finalizados com ponto e vírgula. Uma diretiva de bloco tem a mesma estrutura de uma diretiva simples, mas termina {}
com um conjunto de diretivas adicionais entre chaves em vez de ponto e vírgula. Se uma diretiva de bloco pode conter outras diretivas entre chaves, ela é chamada de contexto (exemplos: eventos, http, servidor e localização).
Em seguida, precisaremos implantar hosts de sites virtuais, portanto, só precisamos conhecer alguns.
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
}
Se você quiser saber mais, pode verificar na documentação do nginx no site oficial - clique aqui
Então vamos começar a configurá-lo.
2.2 Acesso baseado em porta
O acesso à porta é relativamente fácil, você só precisa modificar a porta de escuta, primeiro criamos um caminho de diretório para ser usado posteriormente para armazenar o arquivo index.html exibido na página da 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 Modifique o arquivo de configuração
Você só precisa modificar a porta de configuração listen的80
, depois copiar server http
o módulo para a linha 80, alterar a porta 80 para 81 e modificar o caminho do diretório index.html no arquivo.
[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: Se você deseja digitar manualmente as informações do módulo do servidor, lembre-se de adicionar um ponto-e-vírgula após cada linha para o conteúdo no meio, caso contrário, um erro será relatado.
O uso direto nginx -t
também pode saber se o arquivo de configuração está errado;
[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
Em seguida, inicie o acesso nginx. Observe que fiz um link flexível antes. Se o comando não for encontrado nesta etapa, você pode criar um link suave do comando e precisará usar o caminho completo.
ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Digite nginx diretamente no terminal para iniciar o serviço
[root@localhost nginx]# nginx
2.2.2 Efeito de Acesso
Use o curl para acessar diretamente no 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 acessar a página da web, você precisa desligar o firewall e o selinux antes de poder acessar com sucesso.
2.3 Acesso baseado em IP
Com base no acesso IP, vários IPs são necessários. Na máquina física, você precisa solicitar um IP de rede externo. Claro, estamos usando vmware agora, portanto, adicionar um IP temporário pode ser usado 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
O arquivo de diretório que precisa ser acessado é recriado aqui;
[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 arquivo de configuração
A parte que precisa ser modificada com base no IP de acesso é que server_name
por ser um IP diferente, você precisa adicionar um módulo servidor, e gravar server_name
outro IP nele. location
O caminho de acesso à url sob a regra também precisa ser modificado para o arquivo de diretório criado 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 }
Após a modificação, ele ainda é usado nginx -t
para verificar se o arquivo possui informações de erro.
[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 o serviço
[root@localhost nginx]# nginx -s reload
2.3.2 Resultados de acesso
Acesse o IP no 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>
Visite na web
2.4 Acesso baseado no nome de domínio
Com base no acesso ao nome de domínio, o nome de domínio precisa ser resolvido primeiro. Como está na máquina virtual, é resolvido diretamente na intranet aqui.
[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
Após a análise, crie um novo diretório aqui
[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 arquivo de configuração
O acesso baseado no nome de domínio precisa ser modificado server_name
, location规则的root
o caminho. `
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 }
Use novamente nginx -t
para visualizar o arquivo de configuração
[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 o serviço nginx
[root@localhost nginx]# nginx -s reload
Às vezes, a reinicialização não surte efeito, você também pode fechar o serviço diretamente e reabri-lo.
[root@localhost nginx]# nginx -s stop
[root@localhost nginx]# nginx
2.4.2 Resultados de acesso
acesso no 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
Ao acessar a página da web, ela não pode ser acessada no servidor local aqui, e precisa ser acessada no Firefox virtual.
Para a página PHP, o Firefox baixa por padrão e podemos visualizá-la diretamente no arquivo.
Resumir
Os três hosts virtuais foram configurados aqui, o que é bastante interessante. Você também pode praticar você mesmo. Se achar que o conteúdo está bom, você pode curtir e seguir.