(Я заранее прошу прощения за объем конфигов в этом посте. Я возился с этим несколько часов, и я новичок в Nginx, поэтому я не хотел исключать что-то, что потенциально было актуально.)
Я пытаюсь разместить несколько сайтов Wordpress на одном сервере Ubuntu (Linode, если это имеет значение). Я использую Nginx. Основной домен работает нормально, но каждый запрос к поддомену возвращает 404.
Конфигурация, которую я в основном использовал Документация Wordpress- изложено так:
/etc/nginx/nginx.conf
это главный файл конфигурации. Вот содержание:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
sendfile on;
#tcp_nopush on;
#tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Upstream PHP
##
upstream php {
server unix:/tmp/php-fpm.sock;
server 127.0.0.1:9000;
}
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log debug;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
/etc/nginx/global/wordpress.conf
включен в начало моей записи в sites-available
и выглядит так:
server {
listen 80;
listen [::]:80;
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
# log_not_found off;
}
}
/etc/nginx/global/wp-restrictions.conf
это:
location = /favicon.ico {
log_not_found off;
access_log off;
}
# robots.txt fallback to index.php
location = /robots.txt {
# Some WordPress plugin gererate robots.txt file
allow all;
try_files $uri $uri/ /index.php?$args @robots;
access_log off;
log_not_found off;
}
location @robots {
return 200 "User-agent: *\nDisallow: /wp-admin/\nAllow: /wp-admin/admin-ajax.php\n";
}
location ~ /\.(?!well-known\/) {
deny all;
}
location /wp-content/uploads {
location ~ \.php$ {
deny all;
}
}
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
Вот запись для основного домена в sites-available
. Этот отлично работает:
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html index.php;
server_name mydomain.site www.mydomain.site;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
А вот запись поддомена, которая дает мне 404:
server {
include global/wordpress.conf;
include global/wp-restrictions.conf;
server_name sub.mydomain.site;
root /var/www/microsites/lgw/;
index index.php;
}
Что я сделал, чтобы подтвердить это должен работай:
debug
включенный. В противном случае я получаю бупки, когда отправляю запросы, которые возвращаются как 404.Не уверен, что еще сюда включить. Судя по всем инструкциям, которые мне удалось найти, это должно сработать. Но это не так.
Будем очень признательны за любые намеки на то, что я делаю неправильно. И, пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию, которая упростит ответ на этот вопрос.
Спасибо!