有時候你會想在一台伺服器上為不同的網域運作不同的網站。例如www.siteA.com作為博客,www.siteB.com作為論壇。你可以把兩個網域的IP都解析到你的伺服器上,但沒辦法在Nginx的根目錄裡同時運行兩個不同的網站。這時候,你就需要使用虛擬目錄了。假設你把部落格放在」/home/user/www/blog」下,論壇放在」/home/user/www/forum」下。下面我們就開始設定了:
在Nginx設定目錄下,建立一個”vhost”目錄。本範例假設Nginx是預設安裝,設定目錄在”/etc/nginx”
$ sudo mkdir /etc/nginx/vhost
server { listen 80; # 监听端口 server_name www.siteA.com siteA.com; # 站点域名 root /home/user/www/blog; # 站点根目录 index index.html index.htm index.php; # 默认导航页 location / { # WordPress固定链接URL重写 if (!-e $request_filename) { rewrite (.*) /index.php; } } # PHP配置 location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }同siteA一樣建立siteB的設定文件,兩者僅有的不同是”server_name”和”root”目錄$ sudo vi /etc/nginx/vhost/vhost_siteB.conf
server { ... server_name www.siteB.com siteB.com; # 站点域名 root /home/user/www/forum; # 站点根目录 ... }開啟nginx.conf檔案#sudo vi /etc/nginx/nginx.conf
...
include /etc/nginx/vhost/*.conf;
}
#現在造訪www.siteA.com和www.siteB.com,你會發現瀏覽器會開啟不同的網站
禁止造訪小技巧
假如你的Nginx根目錄設在」/home /user/www”,你想阻止別人透過”http://IP位址/blog”或”http://IP位址/forum”來存取你的站點,最簡單的方法就是禁止IP位址存取。方法如下:
開啟Nginx網站預設設定文件,記得先備份
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_bak
$ sudo vi /etc/nginx/sites-available/default將所有內容刪除,只留以下配置
server { listen 80 default_server; server_name _; return 404; }
重啟Nginx後,別人將無法透過IP位址訪問網站了
如果你不想禁止IP位址存取整個目錄,只是要防止別人透過IP訪問你的部落格和論壇。那麼就需要禁止”/blog”和”/forum”的目錄存取。
打開Nginx網站預設設定文件,同上面一樣,記得先備份
###在」server { }」部分加上以下配置###location ^~ /blog/ { deny all; } location ^~ /forum/ { deny all; }###重啟Nginx即可## #