1. 程式人生 > >[Nginx]-外部多端口映射Https443端口配置

[Nginx]-外部多端口映射Https443端口配置

tab 裏來 nginx -t 生效 load 訪問 href grep syntax

https服務器配置完成後,域名訪問默認匹配至443端口,如果想同時通過https域名網址來請求多個對外服務,就需要在Nginx配置裏來對請求進行規則判斷,並匹配至相應的內部端口,這也是Nginx反向代理強大功能之一,本文主要是自己配置過程的記錄,歡迎討論之指正。

Nginx匹配規則

為了實現預期功能,需要在Nginx配置文件下,對443端口添加多個location匹配規則,規則說明如下:

模式 含義
location = /uri = 表示精確匹配,只有完全匹配上才能生效
location ^~ /uri ^~ 開頭對URL路徑進行前綴匹配,並且在正則之前。
location ~ pattern 開頭表示區分大小寫的正則匹配
location ~* pattern 開頭表示不區分大小寫的正則匹配
location /uri 不帶任何修飾符,也表示前綴匹配,但是在正則匹配之後
location / 通用匹配,任何未匹配到其它location的請求都會匹配到,相當於switch中的default

多個 location 配置的情況下匹配順序為:

  • 首先精確匹配 =
  • 其次前綴匹配 ^~
  • 其次是按文件中順序的正則匹配
  • 然後匹配不帶任何修飾的前綴匹配。
  • 最後是交給 / 通用匹配
  • 當有匹配成功時候,停止匹配,按當前匹配規則處理請求

總結:所以需求實現的關鍵,在於利用不同的匹配規則來映射相應的端口。

查找Nginx配置文件路徑

如果需要操作的centos服務器的nginx服務不是自己部署配置,就需要利用指令來查找nginx服務的配置文件。

  1. 查看nginx的PID,以常用的80端口為例:

    netstat -anop | grep 0.0.0.0:80
  2. 通過相應的進程ID(比如:4562)查詢當前運行的nginx路徑:

    ll  /proc/4562/exe
  3. 獲取到nginx的執行路徑後,使用-t參數即可獲取該進程對應的配置文件路徑,如:
    ```

    /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


## 添加匹配規則

在已經配置好的443端口下,繼續添加location規則

HTTPS server

#
server {
    listen 443;
    server_name localhost;
    ssl on;
    root html;
    index index.html index.htm;
    
    *ssl證書配置規則*
    
    location / {
        proxy_pass  *服務器域名*;
    }

location /testA {
         proxy_redirect off;
       proxy_pass http://localhost:12345;
    }
location /testB{
         proxy_redirect off;
       proxy_pass http://localhost:23456;
    }
}

保存修改後,進行nginx的執行路徑,先測試配置文件是否正確:

/usr/local/nginx/sbin/nginx -t

如果正確,重啟nginx服務。

/usr/local/nginx/sbin/nginx -s reload

``如果一切正常,則即可在外部通過https://服務器域名/testA`和`https://服務器域名/testB`來完成不同的服務請求。

[Nginx]-外部多端口映射Https443端口配置