Nginx基於多端口、多域名配置


一、基於端口訪問

在網卡只有一個,或者服務器資源有限的情況下有多個網站,就可以基於端口,或者基於域名來實現資源的訪問。基於端口訪問就是配置多個不同的端口,將域名指向同一個ip不同的端口來實現。

nginx.conf配置文件如下

#user nobody;
worker_processes 8;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;

keepalive_timeout 65;

##指定不同端口訪問配置server段第一個端口800

server {
listen 800;     #第一端口800
server_name localhost;

location / {
root /www/ctm/xcy-project/yun-app-lives;   ##網站目錄

limit_rate 512k;
sendfile on;
autoindex on; # 開啟目錄文件列表
autoindex_exact_size off; # 顯示出文件的確切大小
autoindex_localtime on; # 顯示的文件時間為文件的服務器時間
charset utf-8,gbk; # 避免中文亂碼


try_files $uri $uri/ /;
index index.html index.htm;

}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

##指定不同端口訪問配置server段第二個端口801

server {
listen 801;   #第二個端口801
server_name localhost;


location / {
root /www/ctm/xcy-project/yun-app;   #項目路徑
try_files $uri $uri/ /;
index index.html index.htm;

               }

error_page 500 502 503 504 /50x.html;
location = /50x.html {

    }
                          }

}

保存重啟

測試訪問800端口

ip:800

 

測試訪問801端口

ip:801

 

以上就是基於同ip不同端口訪問,域名指定相應ip及端口就好。

二、基於不同域名訪問

一般都是在nginx.conf的尾部加入include,使用vhost這樣每個網頁用單獨的配置。

nginx.cnof最尾部的括號內添加如下

include vhost/*.conf;

 

配置文件的同級目錄創建一個vhost文件夾

進入vhost目錄下創建兩個文件,實現不同域名訪問。文件名的最后要以.conf結尾。

 

www.server111.com的配置文件如下

##網站域名 www.server111.com
server {
listen 80;
server_name www.server111.com;    ##指定域名


location / {
root /www/ctm/xcy-project/yun-app-lives; ##項目路徑
try_files $uri $uri/ /;
index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;
location = /50x.html {

}
}

 

www.server222.com的配置文件如下

其實只需要修改一下項目路徑及域名即可。

配置完成保存,然后重啟nginx

因為我們域名是自己編寫的,所以需要添加到本地的hosts文件,不然是無法訪問的。

C:\Windows\System32\drivers\etc

 

添加你自己設置的域名+ip ,尾部添加。

 

 保存然后就可以測試訪問

 

 

 

 

 

 

 

 

 

 

 

######################################################多站點多域名同一ip反向代理配置###########################################################

 

 

編輯nginx配置文件,vim /etc/nginx/nginx.conf

1、分別創建2個upstream,也就是后台真實服務器的pool,一個是news指向web服務器web服務器192.168.50.201,另外一個是sports,指向web服務器192.168.50.202;

2、分別創建2個server並監聽80端口,其中一個設定servername為,proxy_pass轉發到news這個upstream,另外一個設定為,proxy_pass轉發到sports這個upstream;

3、Nginx反向代理對外發布的是192.168.50.123這個IP;

http {

upstream news{
ip_hash;
server 192.168.50.201:80;
}

upstream sports{
ip_hash;
server 192.168.50.202:80;
}

server {
listen 80;
server_name news.aaa.com ;
location / {
proxy_pass http://news;
proxy_set_header Host $http_host;
}

}
server {
listen 80;
server_name sports.aaa.com;
location / {
proxy_pass http://sports;
proxy_set_header Host $http_host;
}

}
}





##########################################################nginx多目錄配置alias和root的區別###########################################################

Nginx虛擬目錄alias和root目錄

 

 

nginx是通過alias設置虛擬目錄,在nginx的配置中,alias目錄和root目錄是有區別的:
1)alias指定的目錄是准確的,即location匹配訪問的path目錄下的文件直接是在alias目錄下查找的;
2)root指定的目錄是location匹配訪問的path目錄的上一級目錄,這個path目錄一定要是真實存在root指定目錄下的;
3)使用alias標簽的目錄塊中不能使用rewrite的break(具體原因不明);另外,alias指定的目錄后面必須要加上"/"符號!!
4)alias虛擬目錄配置中,location匹配的path目錄如果后面不帶"/",那么訪問的url地址中這個path目錄后面加不加"/"不影響訪問,訪問時它會自動加上"/";
    但是如果location匹配的path目錄后面加上"/",那么訪問的url地址中這個path目錄必須要加上"/",訪問時它不會自動加上"/"。如果不加上"/",訪問就會失敗!
5)root目錄配置中,location匹配的path目錄后面帶不帶"/",都不會影響訪問。


舉例說明(比如nginx配置的域名是www.wangshibo.com):
示例一
location /huan/ {
      alias /home/www/huan/;
}

在上面alias虛擬目錄配置下,訪問http://www.wangshibo.com/huan/a.html實際指定的是/home/www/huan/a.html。
注意:alias指定的目錄后面必須要加上"/",即/home/www/huan/不能改成/home/www/huan

上面的配置也可以改成root目錄配置,如下,這樣nginx就會去/home/www/huan下尋找http://www.wangshibo.com/huan的訪問資源,兩者配置后的訪問效果是一樣的!
location /huan/ {
       root /home/www/;
}

示例二
上面的例子中alias設置的目錄名和location匹配訪問的path目錄名一致,這樣可以直接改成root目錄配置;那要是不一致呢?
再看一例:
location /web/ {
      alias /home/www/html/;
}

訪問http://www.wangshibo.com/web的時候就會去/home/www/html/下尋找訪問資源。
這樣的話,還不能直接改成root目錄配置。
如果非要改成root目錄配置,就只能在/home/www下將html->web(做軟連接,即快捷方式),如下:
location /web/ {
     root /home/www/;
}

# ln -s /home/www/web /home/www/html       //即保持/home/www/web和/home/www/html內容一直

所以,一般情況下,在nginx配置中的良好習慣是:
1)在location /中配置root目錄;
2)在location /path中配置alias虛擬目錄。

如下一例:
server {
          listen 80;
          server_name www.wangshibo.com;
          index index.html index.php index.htm;
          access_log /usr/local/nginx/logs/image.log;

    location / {
        root /var/www/html;
        }

   location /haha {                                          //匹配的path目錄haha不需要真實存在alias指定的目錄中
       alias /var/www/html/ops/;                       //后面的"/"符號一定要帶上
       rewrite ^/opp/hen.php(.*)$ /opp/hen.php?s=$1 last;
    # rewrite ^/opp/(.*)$ /opp/hen.php?s=$1 last;
       }

   location /wang {                    //匹配的path目錄wang一定要真實存在root指定的目錄中(就/var/www/html下一定要有wang目錄存在)
      root /var/www/html;
     }

 }

=============================再看下面一例=============================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@web01 vhosts] # cat www.kevin.com.conf
server {
       listen      80;
       server_name www.kevin.com;
     
       access_log   /data/nginx/logs/www .kevin.com-access.log main;
       error_log   /data/nginx/logs/www .kevin.com-error.log;
     
  location / {
       root  /data/web/kevin ;
       index index.php index.html index.htm;
       }
 
   location  /document/  {
       alias  /data/web/document/ ;
}
 
   }
 
 
[root@web01 vhosts] # ll /data/web/
total 4
drwxrwxr-x 2 app app   33 Nov 22 10:22 document
drwxrwxr-x 4 app app  173 Sep 23 15:00 kevin
 
如上配置后,則:
訪問http: //www .kevin.com /admin    就會找到 /data/web/kevin/admin 目錄
訪問http: //www .kevin.com /document   就會找到 /data/web/document  目錄 (里面是一些靜態資源)














###############################寶塔模板##################3

server
{
listen 43000;
server_name yhgj.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/server/stop/public;

#SSL-START SSL相關配置,請勿刪除或修改下一行帶注釋的404規則
#error_page 404/404.html;
#SSL-END

#ERROR-PAGE-START 錯誤頁配置,可以注釋、刪除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END

#PHP-INFO-START PHP引用配置,可以注釋或修改
#include enable-php-72.conf;
#PHP-INFO-END

#REWRITE-START URL重寫規則引用,修改后將導致面板設置的偽靜態規則失效
#include /www/server/panel/vhost/rewrite/yhgj.com.conf;
#REWRITE-END

#禁止訪問的文件或目錄
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}

#一鍵申請SSL證書驗證目錄相關設置
location ~ \.well-known{
allow all;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log off;
}

location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log off;
}
access_log /www/wwwlogs/yhgj.com.log;
error_log /www/wwwlogs/yhgj.com.error.log;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM