前言
有时候我们想在一台nginx上配置多个站点,比如我们将 www.webA.com 以及 www.webB.com 同时部署到一台nginx上,但是我们不能在nginx目录里同时运行两个不同的站点。此时,我们可以利用虚拟目录,比如,我们将站点A放在 /usr/local/nginx/web/demo1下,将站点B放在 /usr/local/nginx/web/demo2 下。
具体配置过程如下:
我们的nginx 配置文件在 /etc/nginx下,我们在 /etc/nginx 下新建一个 vhost 文件夹,此文件夹我们用来放置站点的配置文件。
创建 vhost 目录
# 1. 新建vhost文件夹 mkdir /etc/nginx/vhost # 2. 进入到vhost目录 cd vhost
创建两个配置文件
nginxdemo1.conf
server { listen 80; server_name www.demo1.com demo1.com; location / { root /usr/local/nginx/web/demo1; index demo1.htm demo1.html; } error_page 500 502 503 504 / 50x.html; location = /50x.html { root html; } }
nginxdemo2.conf
server { listen 80; server_name www.demo2.com demo2.com; location / { root /usr/local/nginx/web/demo2; index demo2.htm demo2.html; } error_page 500 502 503 504 / 50x.html; location = /50x.html { root html; } }
配置nginx主配置文件
# nginx配置文件在 /etc/nginx/nginx.conf中 vim /etc/nginx/nginx.conf
在 nginx 配置文件 http 块中,加入红色标注那行代码
#user nobody; user root; worker_processes 3; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 65535; } http { client_max_body_size 10M; server_names_hash_bucket_size 128; include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; error_log logs/error.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; fastcgi_intercept_errors on; error_page 404 /error/404.html; # 此处增加该配置即可 include vhost/*.conf; }
检查配置是否正确并重启 nginx
# 检查nginx配置文件是否正确 nginx -t # 此方式是优雅的重启 nginx nginx -s reload
输入站点A和B进行查看效果


test页面
demo1站点页面
<!DOCTYPE> <html lang="zh-CN"> <head></head> <body> demo1 </body> </html>
demo2站点页面
<!DOCTYPE> <html lang="zh-CN"> <head></head> <body> demo2 </body> </html>