Как запустить django и WordPress с nginx - PullRequest
1 голос
/ 02 февраля 2020

У меня проблема с настройкой моего файла nginx.conf для запуска django сервера в основном домене и сайта WordPress на domain.com/blog.

Это мой файл конфигурации, который мой WordPress dir /var/www/varzesh-kon/blog/:

upstream Main_Project_server {
server unix:/home/amirfarsad/django_env/run/gunicorn.sock fail_timeout=0;
}

server {

  listen   80;
  server_name 2n9l.s.serverhost.name;

  client_max_body_size 4G;
  access_log /home/amirfarsad/logs/nginx-access.log;
  error_log /home/amirfarsad/logs/nginx-error.log;

  location /static/ {
      alias   /home/amirfarsad/Main_Project/static/;
  }

  location /media/ {
      alias   /home/amirfarsad/Main_Project/media/;
  }

  location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      if (!-f $request_filename) {
          proxy_pass http://Main_Project_server;
          break;
      }
  }


  location /blog/ {
      root /var/www/varzesh-kon/blog/;
      index index.php index.html index.htm;
      try_files $uri =404;
  }

  location ~ \.php$ {
      try_files $uri =404;
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
      root /var/www/varzesh-kon/blog/;
  }
}

Мой django сайт работает хорошо, но когда я go до domain.com/blog, он дает мне 404 не найденных nginx страницы.

1 Ответ

1 голос
/ 02 февраля 2020

Попробуйте изменить свое нижнее location block

location ^~ /blog {
        root /var/www/varzesh-kon/;
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php$is_args$args;
    }

Объяснение: В случае директивы root полный путь добавляется к root, включая часть местоположения

In ваш случай:

location /blog/ {
      root /var/www/varzesh-kon/blog/;

Окончательный путь, который получит nginx, будет следующим:

/var/www/varzesh-kon/blog/blog

Именно поэтому он показывает вам 404 not found страницу


Решение : либо используйте alias вместо root

, либо измените root путь на /var/www/varzesh-kon/

location /blog/ {
      root /var/www/varzesh-kon/;
...
}

location /blog/ {
      alias /var/www/varzesh-kon/blog/;
...
}

для получения дополнительной информации: * вики 1029 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...