Я пытаюсь установить wordpress с nginx на экземпляр AWS ubuntu. Но пока я не могу обойтись с этой запрещенной ошибкой 403, которую бросает nginx. Вот мой Nginx конфигурационный файл:wordpress + nginx setup - 403 запрещенная ошибка
server {
listen 80;
server_name test.com;
return 301 https://www.test.com$request_uri;
}
server {
listen 80;
server_name www.test.com;
return 301 https://www.test.com$request_uri;
}
server {
listen 443;
server_name test.com;
return 301 https://www.test.com$request_uri;
}
server {
listen 443 ssl;
server_name www.test.com test.com;
root /home/ubuntu/wordpress;
index index.php index.html index.htm;
location/{
alias /home/ubuntu/wordpress;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+?\.php)(.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
}
Мой nginx
работает с пользователем www-data
, в то время как каталог /home/ubuntu/wordpress
принадлежит ubuntu
пользователем. Тем не менее я предоставил 775 разрешение на использование Wordpress, поэтому это не должно быть проблемой. Но когда я получаю доступ к www.test.com
, он показывает 403 запрещенную ошибку.
Nginx Журнал ошибок показывает сообщение, как это:
2015/12/20 22:49:26 [error] 27984#0: *39 directory index of "/home/ubuntu/wordpress" is forbidden, client: xx.xxx.xxx.xxx, server: www.test.com, request: "GET/HTTP/1.1", host: "www.test.com"
Я php-fpm
работает против пользователя www-data
. Структура каталогов моего WordPress сайта что-то вроде этого:
/home/ubuntu/wordpress
|
+-- index.php
+-- wp-content
Вот мой .htaccess
файл, в случае, если вам нужно, чтобы увидеть это:
# directory browsing
Options All -Indexes
# Disable access to all file types except the following
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>
# Deny access to wp-config.php file
<files wp-config.php>
order allow,deny
deny from all
</files>
# Deny access to all .htaccess files
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
# Block wp-includes folder and files
RewriteEngine On
RewriteBase/
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
Я пришел через несколько дублей на этот вопрос через различные сайты в сети Stack Exchange. Пойдя и пробовав подходы из 15-20 из них, ни один из них, похоже, не работает здесь. Я не уверен, чего не хватает. Может кто-нибудь, пожалуйста, взгляните на это?
Еще один вопрос, который я нашел: Когда я изменяю alias
к root
в location/{}
блоке, Nginx начинает перенаправлять меня www.test.com:8089
. Я не уверен, почему он продолжает перенаправлять на 8089, хотя в настоящее время у меня нет таких правил переадресации. Раньше у меня было правило перенаправления, но этого больше нет. Nginx кэширует правило перенаправления где-то? Я не уверен в этом. Перенаправление также происходит, когда я пытаюсь получить доступ: www.test.com/index.php
, с alias
вещь есть.
Пожалуйста, спросите, нужна ли вам информация о других файлах.
Вы не должны иметь 'alias' директиву вообще. Вам не нужно указывать директиву 'root' в блоке местоположения, поскольку это значение уже определено в блоке' server' и наследуется. Возможно, ваш браузер кэширует предыдущее перенаправление - убедитесь, что вы очищаете кеш при каждом восстановлении. –
@RichardSmith Я пробовал это в окне браузера Incognito. Если я удалю директиву «alias», произойдет такое же перенаправление. –
Единственное объяснение, которое у меня есть, заключается в том, что удаление псевдонима заставляет его работать и что Wordpress вызывает перенаправление. –