我想在http://example.com/content
主持一个Wordpress网站。
我的主站点是example.com上的Meteor站点,前面有nginx。
这是我的nginx配置文件,但http://example.com/content
只是被重定向到https://example.com/content
并完全忽略了/content
位置块。知道如何解决这个问题吗?
# HTTP
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html; # root is irrelevant
index index.html index.htm; # this is also irrelevant
server_name example.com;
location /content/ {
proxy_pass http://123.123.123.123; #wordpress ip
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# redirect non-SSL to SSL
location / {
rewrite ^ https://$server_name$request_uri? permanent;
}
}
答案 0 :(得分:0)
正如所讨论的,在add_header Strict-Transport-Security max-age=15768000;
上使用example.com
以及您拥有多个现有用户的事实意味着在http://example.com
托管任何内容都是不切实际的。
您正在使用proxy_pass
在现有域的子目录中托管WordPress网站,但WordPress服务器实际上是在其他网站上运行。
WordPress服务器不需要也不能使用example.com
的SSL证书。将location /content
块移动到安全服务器:
server {
listen 443 ssl;
server_name example.com;
...
location ^~ /content {
proxy_pass http://123.123.123.123; #wordpress ip
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;
proxy_set_header Accept-Encoding "";
proxy_set_header Proxy "";
}
}
使用^~
运算符可避免现有配置的任何歧义。有关详细信息,请参阅this document。
123.123.123.123
上的WordPress网站必须配置为在https://example.com/content/
下运行,这涉及更改HOME和SITEURL变量。有关详情,请参阅this document。