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;
}