在配置反向代理的時候遇到了一個問題就是我在 nginx 中配置了 server 對應多個 location,每個 location 都是轉發到不同的目標網站 配置文件如下 CC:8083\CC:8080\CC:8088 這三個網站文件結構類似,但屬於不同的業務模塊, 現在有個問題就是我在同一瀏覽器中先訪問了 http://AA/OA 網站是可以正常打開的, 然後我再去訪問http://AA/OEDI時網站就異常了登錄成功無法正常跳轉, 後來發現是緩存文件的問題,清理文件緩存然後再去訪問http://AA/OEDI是正常的。 首次訪問了 OA 時瀏覽器緩存了 OA 的文件,再次訪問 OEDI 時調用了 OA 的緩存導致了跳轉失敗, 請問這種問題有什麼好的決解方法嗎?如何給緩存做標識?
server {
listen 80;
server_name AA;
fastcgi_read_timeout 600; #設置服務響應超時問題 如果不設置WEB表單加載時間長的話會報錯(s)
fastcgi_send_timeout 600; #設置服務響應超時問題 如果不設置WEB表單加載時間長的話會報錯(s)
client_max_body_size 30m; #設置通過反向代理訪問web可上傳文件的最大值(m)
location /OA/
{
root html;
proxy_pass https://CC:8083/;
proxy_pass_request_headers on;
if ( $host ~ "https://CC:8083" )
{
rewrite ^/(.*)$ /OA/$1 last;
}
if ($document_uri ~ http://AA/)
{
rewrite ^/(.*)$ /OA/$1 last;
}
if ( $Uri ~ "https://CC:8083" )
{
rewrite ^/(.*)$ /OA/$1 last;
}
if ( $Uri ~ "https://AA" )
{
rewrite ^/(.*)$ /OA/$1 last;
}
}
location /OEDI/
{
root html;
proxy_pass https://CC:8088/;
#proxy_redirect http://$host/;
proxy_pass_request_headers on;
if ( $host ~ "https://CC:8088" )
{
rewrite ^/(.*)$ /OEDI/$1 last;
}
if ($document_uri ~ http://AA/)
{
rewrite ^/(.*)$ /OEDI/$1 last;
}
if ( $Uri ~ "https://CC:8088" )
{
rewrite ^/(.*)$ /OEDI/$1 last;
}
if ( $Uri ~ "https://AA" )
{
rewrite ^/(.*)$ /OEDI/$1 last;
}
}
location / {
root html;
if ($http_cookie ~* "SEDI") {
rewrite ^/(.*)$ /SEDI/$1 last;
}
if ($http_cookie ~* "OEDI") {
rewrite ^/(.*)$ /OEDI/$1 last;
}
if ($http_cookie ~* "OA") {
rewrite ^/(.*)$ /OA/$1 last;
}
}
location /SEDI/
{ root html;
proxy_pass https://CC:8080/;
#proxy_redirect http://$host/;
proxy_pass_request_headers on;
if ( $host ~ "https://CC:8080" )
{
rewrite ^/(.*)$ /SEDI/$1 last;
}
if ( $host ~ "http://http://AA" )
{
rewrite ^/(.*)$ /SEDI/$1 last;
}
if ($document_uri ~ http://AA/)
{
rewrite ^/(.*)$ /SEDI/$1 last;
}
if ( $Uri ~ "https://CC:8088" )
{
rewrite ^/(.*)$ /SEDI/$1 last;
}
if ( $Uri ~ "https://AA" )
{
rewrite ^/(.*)$ /SEDI/$1 last;
}
}
}