我们收到了客户的请求,我们需要在我们的网站上托管wordpress网站。在内部,我的意思是该网站不能坐在子域中,即https://blog.example.com,而是需要坐在自己的路径/子文件夹中,即https://www.example.com/blog。这是由于页面排名(显然页面排名如果放在子域中则会受到惩罚)
问题是,我们的网站不是用PHP运行的(它是用Scala编写的,在Jetty上运行)。此外,我们的主站点是由Nginx支持的Docker容器运行。
理想情况下,我想在自己的单个服务器上托管Wordpress(Docker是否容器化,这不是一个大问题),在我们主站点的nginx配置中,让它与特定URL的外部服务器相反(即https://www.example.com/blog将指向运行wordpress的外部服务器的IP /主机
你将如何实现这一点/它有可能吗?这是我们主服务器的当前nginx.conf
server {
listen 80;
listen [::]:80;
listen 443 default_server ssl;
server_name www.example.com.au;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED";
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
location / {
proxy_pass http://localhost:8080;
proxy_redirect http://www.example.com.au /;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_read_timeout 600s;
port_in_redirect off;
}
}
这是我们当前nginx.conf
的示例,正如您所看到的,实际网站正在localhost:8080
上托管,我们只是主网站的代理重定向。
答案 0 :(得分:0)
假设wordpress
服务托管在http://localhost:8081
,那么您只需proxy_pass
/blog
http://localhost:8081
{}} {}},您可以添加以下块您的nginx
server
阻止:
location ^~ /blog {
proxy_pass http://localhost:8081;
}