首頁  >  文章  >  如何在Nginx上設定多個站點

如何在Nginx上設定多個站點

无忌哥哥
无忌哥哥原創
2018-06-27 15:26:262973瀏覽

有時候你會想在一台伺服器上為不同的網域運作不同的網站。例如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

##建立siteA的設定檔

$ sudo vi /etc/nginx/vhost/vhost_siteA.conf


輸入以下設定資訊

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


將虛擬目錄的設定檔加入」http {}」部分的結尾

http {

   ...
   include /etc/nginx/vhost/*.conf;
}

重啟Nginx服務

$ sudo service nginx restart


#現在

$ sudo service nginx restart

#現在造訪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即可## #
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn