Nginx
Nginx 根據位置塊重定向所有傳入的請求
我使用 Nginx 作為反向代理。我假設我有一個像 test.com 這樣的域和一個像 /test 這樣的路徑的位置塊。該位置將 proxy_pass 到另一個網站,例如http://test2.com。當我在瀏覽器上鍵入 URL 時,它會將第一個請求重定向到應用程序(http://test.com/test/ –> http://test2.com/)。但是,所有傳入的請求都將在沒有我在 Nginx 上定義的位置的情況下發送。如何使所有傳入請求都遵循該路徑?我想要這樣的東西:
- 第一個請求:http ://test.com/test/ –> http://test.com
- 傳入請求:http ://test.com/test/statifile.js
- http://test.com/test/api/something等等…
server { listen 80; charset utf-8; server_name test.com; location = /auth/test{ internal; proxy_pass http://test.com/test/decisions/; proxy_pass_request_body off; proxy_set_header Content-Length ''; proxy_set_header X-Original-URI $request_uri; } location = /test/decisions/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header Authorization $http_authorization; proxy_pass http://valid.domain/test/api/authorization; } location /test/ { auth_request /auth/test; auth_request_set $auth_status $upstream_status; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header Authorization $http_authorization; proxy_pass https://test2.com/; proxy_pass_header Server; proxy_http_version 1.1; proxy_redirect default; access_log /var/log/nginx/access.log; client_max_body_size 10240M; } }
術語“傳入請求”在這裡令人困惑。我假設你的意思是:
- 瀏覽器向 發出請求
http://example.com/test/
,由 nginx 代理到http://2.example.com/
。- 瀏覽器直接發出後續請求
http://2.example.com/statfile.js
,當您希望發出請求時http://example.com/test/statfile.js
對於這個問題陳述,最佳解決方案是修改
2.example.com
伺服器配置,以便它創建指向example.com/test
的 URL,而不是指向的 URL2.example.com
。大多數情況下,Web 應用程序中有一個可以修改的根 URL 設置。不太可靠和性能更差的選項是使用
sub_filter
模組替換塊中所有出現的2.example.com
with 。example.com/test/``proxy_pass
但是,這可能會產生意想不到的副作用。