使用子域通過 NGINX 將 HTTP(或 TCP)請求轉發到特定埠
我想通過遠端 Web 伺服器公開本地 Web 伺服器。遠端主機已經有一個 Nginx 和一個 web 應用程序(webmail)。遠端伺服器充當將埠 80 轉發到遠端 8080 的本地 Web 伺服器的網關。這是有效的。
現在我想將子域(例如,bridge.mydomain.co)請求轉發到轉發的埠。我嘗試使用這個:
server { listen 80; listen [::]:80; server_name bridge.mydomain.co; location / { proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
本地網路伺服器正在執行一個複雜的 PHP 應用程序,所以它抱怨:
40 個錯誤,例如:
拒絕載入樣式表’’,因為它違反了以下內容安全策略指令:“default-src https:data:‘unsafe-inline’‘unsafe-eval’”。請注意,‘style-src-elem’ 沒有明確設置,所以 ‘default-src’ 用作備份。
和 56 個:
拒絕載入腳本’’,因為它違反了以下內容安全策略指令:“default-src https:data:‘unsafe-inline’‘unsafe-eval’”。請注意,‘script-src-elem’ 沒有顯式設置,因此 ‘default-src’ 用作備份。
我知道我可以直接公開轉發的埠,這完美無缺。但我想(最終)使用 nginx 進行 TLS 終止然後轉發。
閱讀有關此問題的資訊似乎是 PHP 中的本地網路伺服器拒絕了請求。然而,我不知道如何解決它。
有什麼幫助嗎?
最後想清楚。我需要傳遞/添加以下標題:
server { listen 80; listen [::]:80; server_name bridge.mydomain.co; proxy_pass_header server; location / { proxy_set_header Host $host; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://bridge.mydomain.co http://bridge.mydomain.co:8080 http://bridge.mydomain.co/core/img/favicon-touch.png; img-src 'self' http://bridge.mydomain.co http://bridge.mydomain.co:8080;"; proxy_pass http://bridge.mydomain.co:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
我相信不需要埠版本,並且“預設”涵蓋了一些缺少的標頭。所以還有改進的餘地。
如果你想在這裡閱讀解釋,有一些比我知識淵博的人提供的材料:https ://stackoverflow.com/questions/33300111/how-to-override-content-security-policy-of-site-a-while -使用-nginx-proxy-pass-o