Обратный прокси-сервер Nginx с SSL - ошибка 403
Последние пару дней я пытался установить Nginx в качестве обратного прокси-сервера, но не могу заставить его работать. Каждый раз, когда я загружаю страницу на своем сайте или даже файл на моем сервере, она возвращает ошибку 403.
Я следовал учебному пособию, которое я нашел в DigitalOcean, и которое я закончил. (В конце статьи есть изображение страницы phpinfo, на которой написано, что она загружена с помощью обработчика Apache. Моя страница phpinfo сказала то же самое.
Но что бы я ни делал, я не могу заставить ошибку 403 уйти.
Спецификации сервера:
ОС: Unbutu
Оперативная память: 512 МБ
Файл конфигурации Nginx
server {
### server port and name ###
listen *:443;
ssl on;
server_name --Server Name--;
#include global/common.conf;
#include global/wordpress.conf;
#include global/multisite.conf;
### SSL log files ###
access_log --Log Location--;
error_log --Log Location--;
### SSL cert files ###
ssl_certificate --Certificate File--;
ssl_certificate_key --Certificate Key File--;
root /var/www/;
allow 127.0.0.1;
deny all;
index index.php index.html index.htm;
server_name --Server Name--;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
location ~ /\.ht {
deny all;
}
}
Файл Apache Ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
#Listen 127.0.0.1:8080
Listen *:8080
#Listen 80
<IfModule ssl_module>
Listen 444
#Didn't work on 443 with Nginx as a reverse proxy
</IfModule>
<IfModule mod_gnutls.c>
Listen 444
#Didn't work on 443 with Nginx as a reverse proxy
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Конфигурационный файл Apache
<VirtualHost *:8080>
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
1 ответ
Хорошо, все выглядит так, как будто все идет гладко. По сути, я изменил свой блок сервера Nginx для пересылки запросов SSL на порт 445
, на котором работает Apache SSL.
Серверный блок Nginx
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass https://127.0.0.1:445;
Файл виртуального хоста Apache
<VirtualHost *:445>
(Apache Config options w/ SSL)
</VirtualHost>
Этот пост отправил меня на правильный путь. Многосайтовая маршрутизация обратного прокси Nginx в Apache