[Nginx]-外部多端口映射Https443端口配置
阿新 • • 發佈:2018-03-17
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服務的配置文件。
查看nginx的PID,以常用的80端口為例:
netstat -anop | grep 0.0.0.0:80
通過相應的進程ID(比如:4562)查詢當前運行的nginx路徑:
ll /proc/4562/exe
獲取到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端口配置