Linux
未提供斜杠時,nginx 重定向(非代理)到 apache 後端
當我訪問時
http://example.com/folder
,我的瀏覽器會重定向到example.com:8080
.但是,當我訪問
http://example.com/folder/
.後端是
apache
偵聽埠的伺服器8080
。
nginx
配置:server { listen 80 default_server; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; proxy_redirect default; } }
我試過了:
... proxy_pass http://127.0.0.1:8080/; ....
還是同樣的問題。我看過類似的問題,但似乎無法得到這個問題的答案。
有人有想法麼?
問題是
apache
’smod_dir
模組將非斜杠 403 重定向到帶有斜杠的 URL。關閉指令是一種解決方法,但我喜歡這個
DirectorySlash
功能。只是不想暴露apache
後端。在嘗試了一些事情之後,我終於通過修改我的
nginx
配置找到了一個可行的解決方案:... proxy_set_header Host $host; ...
…對此:
... proxy_set_header Host $host:80; ...
這成功了!希望這對某人有所幫助,因為它確實讓我很頭疼。
禁用
port_in_redirect
配置中的選項。Syntax: port_in_redirect <on | off> Default: on Context: http, server, location
指令允許或阻止 Nginx 處理的重定向中的埠指示。如果
port_in_redirect
是off
,則 Nginx 在重定向請求時不會在 URL 中添加埠。