Я полный новичок, когда дело доходит до Nginx, но я пытаюсь переключиться на свой сайт WordPress. Все работает, даже постоянная ссылка, но я не могу получить доступ к своей административной директории WordPress (я получаю ошибку 403).
Мой WordPress установлен во вложенной папке, так что это немного усложняет мне задачу. Вот мой файл конфигурации Nginx:
server {
server_name mydomain.com;
access_log /srv/www/mydomain.com/logs/access.log;
error_log /srv/www/mydomain.com/logs/error.log;
root /srv/www/mydomain.com/public_html;
location / {
index index.php;
# 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 /myWordpressDir {
try_files $uri $uri/ /myWordpressDir/index.php?$args;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/mydomain.com/public_html$fastcgi_script_name;
fastcgi_split_path_info ^(/myWordpressDir)(/.*)$;
}
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires max;
}
}
Шаг index index.php;
вне location /
блок в серверный блок.
Ваша конфигурация должна выглядеть так:
server {
server_name mydomain.com;
access_log /srv/www/mydomain.com/logs/access.log;
error_log /srv/www/mydomain.com/logs/error.log;
root /srv/www/mydomain.com/public_html;
index index.php;
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 /myWordpressDir {
try_files $uri $uri/ /myWordpressDir/index.php?$args;
}
Вы можете опустить location /
блокировать, потому что в вашем случае это не нужно.
Изменить: в таких случаях, как этот, tail /var/log/nginx/error.log
поможет вам определить, что происходит не так. В вашем случае это, вероятно, покажет:
directory index of "/srv/www/mydomain.com/public_html/myWordpressDir/wp-admin/" is forbidden
Вам не хватает index
декларация. Пример:
index index.php;
У тебя один в один location
, но не другой. Поэтому вы не можете получить доступ index.php
с помощью /
в этом каталоге или его подкаталогах.