Nginx-将Wordpress作为子域运行,在主域上运行另一个应用程序

时间:2020-09-14 07:43:45

标签: wordpress nginx shiny-server

我在主域运行其他应用程序(发光服务器)的子域中部署Wordpress时遇到问题。出于问题的目的,my-domain.com是主要域,我想部署Wordpress网站的位置是my-domain.com/blog。这是我当前拥有的配置文件(在/etc/nginx/sites-available/my-domain.com中链接到启用了站点的文件中):

server { 
  root /var/www/my-domain.com; # Wordpress directory

  server_name my-domain.com www.my-domain.com;

  index index.html index.htm index.nginx-debian.html index.php;

  ## Shiny server
  location / {
    proxy_pass http://MY_IP:SHINY_SERVER_PORT;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

  ## Wordpress subdomain location
  location /blog {
    try_files $uri $uri/ /index.php$is_args$args;

    location ~ /\.ht {
      deny all;
    }

    ## Wordpress restrictions 
    location = /blog/favicon.ico { log_not_found off; access_log off; }
    location = /blog/robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }
  }

  ## Added PHP config locations for MySQL/WP
  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
  }

  ## SSL configuration added by certbot
  # listen [::]:443 ssl ipv6only=on; # commented out as the server is not ipv6
  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/my-domain.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/my-domain.com/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
  if ($host = www.my-domain.com) {
      return 301 https://$host$request_uri;
  } # managed by Certbot


  if ($host = my-domain.com) {
      return 301 https://$host$request_uri;
  } # managed by Certbot


  listen 80;
  listen [::]:80;

  server_name my-domain.com www.my-domain.com;
  return 404; # managed by Certbot

}

该站点的先前版本仅是Shiny服务器,我对配置的理解非常了解,该配置适用于在主域下运行该应用程序。作为参考,基于this tutorial添加了其他位。上面的配置可以在my-domain.com上运行Shiny服务器应用程序,但是当我导航到my-domain.com/blog时,会出现以下“坏的” Wordpress版本:

enter image description here

我已验证我是否也正确配置了Wordpress:如果我将proxy_passproxy_set_header行注释掉并将try_files行添加到主{{1 }}块并删除location /块)。我认为我的问题是对location /blog目录,对php的一无所知以及对Nginx的总体业余理解的误解。我在这里做错了什么? This question似乎已接近完成我想要的目标,但是在实现这一点之后,var/www下载了一个php文件而不是加载任何东西。如果可以提供其他任何信息,请告诉我-我很茫然。谢谢!

1 个答案:

答案 0 :(得分:1)

万一有人好奇,我想通了。我离得很近,但是有几件事停了。

1。)Wordpress文件位于主/var/www/my-domain.com目录中,但需要将它们移动到与我想将Wordpress移至的扩展名对齐的相应子目录。在这种情况下:/var/www/my-domain.com/blog

2。)之后,我的原始问题中的Nginx配置需要进行如下更新:

发件人:

## Wordpress subdomain location
location /blog {
  try_files $uri $uri/ /index.php$is_args$args;

收件人:

## Wordpress subdomain location
location /blog {
  try_files $uri $uri/ /blog/index.php$is_args$args;

3。)另外,我不确定这是否重要,但是我原来的根目录设置为/var/www/my-domain.com,并将其更改为/var/www/my-domain.com/。这可能一点都不重要,但这是我可以看到的唯一另一件事。

事后看来,简单的事情看起来确实很明显,但是我对Nginx的了解还不够。无论如何,希望这对任何偶然发现的人有所帮助。

相关问题