前言
有時候我們想在一台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>
