[英]How to enable http2/grpc on port 80 (i.e. without TLS) with nginx ingress?
[英]nginx: How do I make a rewrite (redirect) relative? (i.e. don't mess with the port number!)
我目前正在使用nginx 1.9.11。 我有一種情況,我的應用程序是通過負載平衡器從動態端口提供服務的,但是應用程序本身的端口已設置。 看起來像這樣
Port [4000-4999] on load balancer -> instances of nginx all on port 80
我需要將/myapp
重定向到/myapp/
而不會丟失端口信息。 但是我不知道應用程序級別的端口,因為這些應用程序是動態創建和銷毀的!
這是我的重寫規則的語法:
rewrite ^/myapp /myapp/
我得到的是:
http://example.com:4000/myapp -> http://example.com/myapp # no port 4000!
我無法對端口進行硬編碼...因為存在千種可能性,並且它們一直在變化! 我需要留在同一個端口上,但是我不知道我們進入哪個端口。 如何讓Nginx獨自離開端口?
我已經嘗試過的...
在http
, server
和location
部分中:
port_in_redirect off;
在server
部分:
proxy_set_header Host $host:$server_port;
同樣在server
部分:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
經典。 經過兩天的努力,我寫了一個不錯的Stack Overflow帖子,然后我立即想到了一些事情,我嘗試了一下,並且它起作用了。
解決問題的方法如下:我將重寫規則更改為如下所示:
rewrite ^/myapp $http_host/myapp/
而且有效!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.