Nginx重定向为一个路径(wordpress)

时间:2017-04-24 16:22:31

标签: wordpress nginx

我想在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;
    }
}

1 个答案:

答案 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