Nginx

Nginx 到 apache 的反向代理不允許 Wordpress 管理員中的查詢字元串

  • December 7, 2017

我在 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 導致重複的查詢字元串

引用自:https://serverfault.com/questions/887086