Apache-2.2
Nginx proxy_pass 重定向到錯誤的 URL
我已經將 Nginx/Apache2/Wordpress 設置為使用代理記憶體,以防止過多的伺服器負載(狗屎主題和外掛)。
這一切都有效,但是一旦你點擊 Wp-Admin,它就會重定向到
http://backend:82
反對http://example.com/wp-admin。我從Nginx/Apache Proxy_pass 教程中獲取了配置。
我懷疑這是 wp-admin/login 規則,但它看起來就像其他 Proxy-pass 規則一樣,所以我很難過。我的配置如下:
proxy_cache_path /var/run/nginx-cache levels=1:2 keys_zone=main:15m inactive=60m; #proxy_temp_path /var/run/nginx_cache; server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name ########; # Set proxy headers for the passthrough proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Let the Set-Cookie header through. proxy_pass_header Set-Cookie; ## domain.org -> www.domin.org (301 - Permanent) if ($host ~* ^([a-z0-9]+\.org)$) { set $host_with_www www.$1; rewrite ^(.*)$ http://$host_with_www$1 permanent; } # Max upload size: make sure this matches the php.ini in .htaccess client_max_body_size 8m; # Catch the wordpress cookies. # Must be set to blank first for when they don't exist. set $wordpress_auth ""; if ($http_cookie ~* "wordpress_logged_in_[^=]*=([^%]+)%7C") { set $wordpress_auth wordpress_logged_in_$1; } # Set the proxy cache key set $cache_key $scheme$host$uri$is_args$args; # All media (including uploaded) is under wp-content/ so # instead of caching the response from apache, we're just # going to use nginx to serve directly from there. location ~* ^/(wp-content|wp-includes)/(.*)\.(gif|jpg|jpeg|png|ico|bmp|js|css|pdf|doc)$ { root /var/www/html/nen; } # Don't cache these pages. location ~* ^/(wp-admin|wp-login.php) { proxy_pass http://backend; } location / { proxy_pass http://backend; proxy_cache main; proxy_cache_key $cache_key; proxy_cache_valid 30m; # 200, 301 and 302 will be cached. # Fallback to stale cache on certain errors. # 503 is deliberately missing, if we're down for maintenance # we want the page to display. proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_504 http_404; # 2 rules to dedicate the no caching rule for logged in users. proxy_cache_bypass $wordpress_auth; # Do not cache the response. proxy_no_cache $wordpress_auth; # Do not serve response from cache. } # Cache purge URL - works in tandem with WP plugin. location ~ /purge(/.*) { proxy_cache_purge main "$scheme://$host$1"; } } # End server upstream backend { # Defines backends. server localhost:82; }
您必須定義伺服器的上游標籤頂部。因為您不能在伺服器範圍內使用未定義的變數。
這是來自您的原始碼的範常式式碼
upstream backend { # Defines backends. # Extracting here makes it easier to load balance # in the future. Needs to be specific IP as Plesk # doesn't have Apache listening on localhost. ip_hash; server xxx.xxx.xxx.xxx:81; # IP goes here. } server { listen xxx.xxx.xxx.xxx:80; # IP goes here. server_name fauna-flora.org www.fauna-flora.org xxx.xxx.xxx.xxx; # IP could go here. # Set proxy headers for the passthrough proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;