[英]Nginx Reverse proxy config
我遇到了一個簡單的配置與nginx一起工作的問題。 我有一個托管docker容器的服務器,所以nginx在容器中。 所以我們打電話給url foo.com
。 我想url foo.com/service1
實際上只是去另一個端口的foo.com,所以它實際上是拉foo.com:4321
和foo.com/service2
來拉foo.com:5432
等等上。 這是我遇到問題的配置。
http {
server {
listen 0.0.0.0:80;
location /service1/ {
proxy_pass http://192.168.0.2:4321/;
}
location /service2/ {
proxy_pass http://192.168.0.2:5432/;
}
}
}
所以服務和nginx的生活在192.168.0.2。 能夠做到這一點的首選方法是什么? 先感謝您!
作為旁注,這是在docker容器中運行的。 謝謝!
我認為您應該首先通過刪除反向代理配置來檢查您的foo.com
是否指向正確的IP地址。 例如
http {
server {
listen 80;
server_name foo.com;
location / {
}
}
}
然后,如果您的ip
地址已經在端口80上運行了服務,則應為每個服務指定server_name
,如我的示例所示。 Nginx只能通過server_name
區分哪個服務響應哪個域。
*我的猜測是你忘記了server_name
選項。
http {
server {
listen 80;
server_name foo.com;
location /service1/ {
proxy_pass http://192.168.0.2:4321/;
}
location /service2/ {
proxy_pass http://192.168.0.2:5432/;
}
}
}
我猜你的問題與Nginx本身無關,而是與Docker網絡有關。 您提供的信息不足以得出詳細的結論,但這里有一些建議:
在運行nginx容器的同一主機上運行一個簡單的Docker容器,並從該容器內部嘗試curl
(我已經看到你的答案,你可以從運行Nginx的服務器調用curl
,但它實際上並不相同)
例如,如果運行nginx容器的服務器是OSX或Windows,它可能使用具有自己的網絡堆棧,IP地址,路由等的中間Linux虛擬機。
這是我向內玻璃魚發送的信息。 檢查使用proxy_redirect off&proxy_set_header X-NginX-Proxy true;
#Glassfish
location /MyService/ {
index index.html;
add_header Access-Control-Allow-Origin $http_origin;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-NginX-Proxy true;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:18000/MyService/;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.