我有一個在埠 5555 上運行的應用程式。我使用 NGINX 設定了從埠 5554 到 5555 的反向代理,并對其進行了基本身份驗證。這是我的default.conf檔案
server {
listen 5554;
listen [::]:5554;
server_name 123.123.123.123;
location / {
auth_basic "protected gateway area";
auth_basic_user_file /etc/apache2/.htpasswd;
proxy_pass http://localhost:5555;
}
}
我需要讓 NGINX 在埠 5555 上進行偵聽,該埠與運行應用程式的埠相同。然后在檢查身份驗證后,代理應該將請求轉發給實際的應用程式。但是,當我將組態檔上的偵聽埠從 5554 更改為 5555 并向 5555 發送請求時,該請求只是繞過了代理。
這可能嗎?如果是這樣,怎么做?
uj5u.com熱心網友回復:
從技術上講,您不能將同一埠系結到同一 IP 上的兩個應用程式。NGNIX 反向代理就像一個輕量級服務器一樣作業,它監聽請求和配置的驗證/操作/路由/重寫/標頭操作/域驗證/SSL 卸載等,然后請求到達旨在處理的實際服務器請求。
但是,有一種方法可以通過為同一臺機器設定兩個 IP 來處理它(您可以通過多種方式為同一臺機器獲取多個 IP,例如:
- 虛擬網路 - 可以創建一個 VNet,并且相同的埠與不同的 IP 系結,其中第一個 IP 攔截請求并轉發到第二個 IP
- 容器化 - 如果您的應用程式是容器化的,那么它可以很容易地實作
- 多個網卡 - 如果多個網卡連接到機器并連接到網路,則將存在單獨的 IP,在這種情況下,同一埠可以與同一臺機器上的不同 IP 一起使用
- 作業系統的 SO_REUSEPORT 特性 - 這是 NGINX 在 SO_REUSEPORT 一個 Linux 內核特性的幫助下支持的全新特性。如果您的作業系統支持這一點,您可以系結兩個偵聽來自同一埠的請求的應用程式。但同樣,它并不是為有問題的用例而設計的。詳情閱讀:https ://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/#:~:text=NGINX 1.9.,IP address and port combination .
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/487222.html
標籤:nginx
