Nginx
Nginx 到 apache 的反向代理不允許 Wordpress 管理員中的查詢字元串
我在 DigitalOcean 液滴上執行 Wordpress,它在 apache 伺服器上執行良好,但我將它放在 Nginx 反向代理後面以更好地提供靜態文件。前端網站可以工作,但我在 wp-admin 區域遇到問題。
我可以毫無問題地訪問主要的 wp-admin 部分,(domain.com/wp-admin)以及任何 .php 頁面(例如 /wp-admin/upload.php)但是任何時候我需要按文章類型列出一些東西,例如
/wp-admin/post-new.php?post_type=page
或者
/wp-admin/edit.php?post_type=product
我得到“文章類型無效”。
我假設它是 nginx 配置,這是我認為我在設置 nginx 時編輯的唯一 .conf 文件(它在 /etc/nginx/sites-available 中)
server { listen 80; listen 443; server_name domain.com www.domain.com; root /var/www/html; index index.php index.htm index.html; ssl on; ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; location / { try_files $uri $uri/ /index.php?$request_uri$query_string$is_args$args; } location ~ \.php$ { proxy_pass http://ipaddress:85$request_uri$query_string$is_args$args; 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; } location ~ /\. { deny all; } }
誰能幫我看看這裡發生了什麼?或者至少在哪裡尋找調試這個。
編輯:在我的 apache 訪問日誌中找到了這個:
10.15.0.2 - - [07/Dec/2017:17:15:05 +0000] "GET /wp-admin/edit.php?post_type=page?post_type=page HTTP/1.0" 500 3814 "www.domain.net/wp-admin/post.php?post=2&action=edit" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0"
我發現了這個問題,這是一個愚蠢的問題:
location ~ \.php$ { proxy_pass http://ipaddress:port$request_uri; 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; }
代替
location ~ \.php$ { proxy_pass http://ipaddress:85$request_uri$query_string$is_args$args; 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;
}
這 $ is_args $ args 導致重複的查詢字元串