proxy_set_header Hodst$host是管理面板URL所必需的,但会混淆其他wordpress URL



当我把

proxy_set_header Host $host;

在我的nginx.conf-file中的位置/wordpress/下,我可以在管理面板之外处理wordpress URL,其中/wordpress/从URL中删除,从而使管理面板中的所有链接都不起作用。

如果我删除proxy_set_header主机$Host;,我得到了不工作的Wordpress网址,但一个工作的管理面板。

我运行了一个Wordpress安装,它有一个NextJs前端,前面有docker compose和nginx反向代理。我需要工作的Wordpress url和管理面板,因为我需要访问RSS提要(当我做proxy_set_header的事情时,/feed url不起作用)。

我在nginx conf中的位置块:

location /wordpress/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://IP-TO-WORDPRESS:8000/;
# proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
}

已尝试

  • 添加和删除proxy_set_header主机$Host
  • 为wp-admin添加一个特殊的位置块(/wordpress/wp-admin-不起作用)
  • 更改proxypass的url
  • 更改wordpress-mysql数据库中wpoptions中的siteurl和home

整个Nginx.conf:

events {
worker_connections  1024;
# worker_processes and worker_connections allows you to 
calculate maxclients value:
# max_clients = worker_processes * worker_connections
}
http{
server {
listen 80;
listen [::]:80 default_server ipv6only=on;
return 301 https://$host$request_uri;
}
# HTTPS ?~@~T proxy all requests to the Node app
server {
# Enable HTTP/2
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name SERVER-NAME.no;
# Use the Let?~@~Ys Encrypt certificates
ssl_certificate /etc/letsencrypt/live/SERVER- 
NAME.no/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/SERVER- 
NAME.no/privkey.pem;
# Include the SSL configuration from cipherli.st
include snippets/ssl-params.conf;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:82/;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}
location = /wordpress {
return https://SERVER-NAME.no/NEXT-JS-BLOG-PAGE;
}
location /wordpress/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://IP.TO-WORDPRESS:8000/;
# proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}

预期:

我希望url既可以在wordpress管理面板中使用,也可以用于wordpress帖子和rss提要。事实并非如此。

请帮帮我,我对这件事很茫然。

发现问题出在Wordpress应用程序中,而不是Nginx配置。事实证明,Wordpress有一个名为wp_admin_canonical_url()的东西,它除了设置siteurl和home之外,还设置url。

请参阅https://wordpress.stackexchange.com/questions/269798/wrong-wp-admin-url.

最新更新