1. 程式人生 > >Nginx-------Nginx的安裝和多域名配置

Nginx-------Nginx的安裝和多域名配置

Nginx安裝

nginx預設安裝為Linux的服務 ,所以可以使用service nginx start, stop, restart, try-restart, reload, force-reload, status來操作nginx。

Nginx配置檔案

nginx的配置檔案預設讀取/etc/nginx/nginx.conf檔案。

當然也可以修改使用的conf路徑,使用命令:
./nginx -c 你的conf檔案位置
可以相對路徑或者絕對路徑。
如果是不熟悉環境的Linux伺服器,可以使用命令來快速查詢nginx.conf檔案 :
sudo  find  / -name "nginx.conf"
也可以使用命令
sudo nginx -t 
來輸出正在使用的配置檔案:
nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful
nginx的配置都是由 directives組成,directives由簡單指令或者區塊指令組成 
簡單指令:listen 80; 
區塊指令由{}包含,區塊指令又可以包含多個簡單指令和區塊指令:
http {
    server {
    }
}

多域名配置

我們都知道如果在域名管理的控制面板設定域名對應ip只能設定到ip,不能詳細設定到埠。如果一臺伺服器部署了多個web應用,使用的不同埠啟動的,那麼就可以Nginx做對映。

比如我有一個域名 www.525.life。

域名還可以分出2級域名: admin.525.life。

我在域名控制面板把這兩個域名都指向我的伺服器公網ip 123.123.123.123。

這時候發現www.525.life和admin.525.life域名訪問都只是對應到了 使用埠80的Web程式(預設的)。

如果我們要訪問81埠的應用程式只能使用:

www.525.life:81或者

admin.525.life:81。

但是這樣很不方便。我們要把埠去掉也能訪問就需要使用Nginx做對映。

我們期望www.525.life訪問8880埠,admin.525.life訪問8881埠。那麼可以設定如下:

server
{
    listen 80;
    server_name www.525.life;
    location / {
        #....
        proxy_pass http://localhost:8880;
    }
    ##### other directive
}


server
{
    listen 80;
    server_name admin.525.life;
    location / {
        #....
        proxy_pass http://localhost:8881;
    }
    ##### other directive
}

這樣設定就可以了。把8880和8881都對映到80埠的監聽。

使用過載命令使nginx生效:

sudo nginx -s reload

使用命令重啟nginx生效:

/etc/init.d/nginx restart

這樣就能使用www.525.life訪問8880埠,admin.525.life訪問8881埠。

每個域名一個conf的寫法

我們在上面的例子中使用的是一個檔案多個域名的寫法,也就是隻使用一個conf,在裡面不斷的增加server。這種方式很直觀,但是域名多了不好管理。
Nginx支援引入的用法,也就是我們可以在其他地方先新建好conf檔案,conf檔案中記錄server的資訊如下:
admin.conf中的內容是:
server
{
    listen 80;
    server_name admin.525.life;
    location / {
        #....
        proxy_pass http://localhost:8881;
    }
    ##### other directive
}
www.conf中的內容是:
server
{
    listen 80;
    server_name www.525.life;
    location / {
        #....
        proxy_pass http://localhost:8880;
    }
    ##### other directive
}
admin.conf和www.conf都放在/data/nginx/conf/vhost目錄下。
然後在nginx.conf中使用引入命令:
include             /data/nginx/conf/vhost/*.conf;
即可。
需要注意的是這句命令應該放在
http{
}
的花括號內。
因為include的命令引入相當於被引入的所有程式碼寫在nginx.conf中一樣。

301跳轉

我們留意到生活中很多時候不帶www也能訪問到某個網站,這也能通過Nginx實現。跟上面的配置一樣,再增加一個server如下:

server
{
    listen 80;
    server_name  525.life;
    location / {
        #....
        proxy_pass http://localhost:8880;
    }
    ##### other directive
}

或者進行301跳轉

server
{
    listen 80;
    server_name 525.life;
    rewrite ^/(.*) http://www.525.life/$1 permanent;
}


新增404網頁

新增404網頁,都可又直接在裡面新增,如:
server
{
listen 80;
server_name www.web126.com; #繫結域名
error_page 404 /404.html;



禁止IP直接訪問

最後還有一個方法需要注意,可能有需要禁止IP直接訪問80埠或者禁止非本站的域名繫結我們的IP,這樣的話應該
如下處理,放到最前一個server上面即可:
server{
listen 80 default;
server_name _;
return 403;
}