Войти

Показать полную графическую версию : [решено] проксирование https с nginx на apache


za1
17-11-2017, 16:02
Доброго времени суток, помогите разобраться с конфигом для проксирования https с nginx на apache.
Общий вид схемы следующий: есть 1 виртуалка с Centos 7, на ней поднят апач, для отдачи тяжелого контента (php), и nginx, для отдачи статики и проксирования запросов на апач. В процессе проб и ошибок вышел на рабочую версию конфига, но при этом сейчас сайт отдается по https но с задержкой, в которой оказывается страница недоступности. Ниже конфиг для nginx и апача. Сразу уточню, опыта в создании таких систем у меня нет, и поднято это исключительно в целях тренировки.

/etc/nginx/conf.d/disk.conf



server{
listen 80;
server_name disk;
# return 301 https://$host$request_uri;

listen 443;

# add_header Strict-Transport-Security max-age=2592000;

ssl on;
ssl_certificate /var/www/html/disk/cert/sandisk.crt;
ssl_certificate_key /var/www/html/disk/cert/sandisk.key;

location / {
root /var/www/html/disk;
# index nginx.html;
autoindex on;
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $http_host;
# add_header [always];
}
location ~ ^.*\.html$ {
root /var/www/html/disk;
}
}



/etc/httpd/sites-available/disk.conf



<VirtualHost 127.0.0.1:81>
ServerName disk
DocumentRoot /var/www/html/disk
ErrorLog /var/www/html/disk/error.log
CustomLog /var/www/html/disk/requests.log combined
SetEnvIf X-Forwarded-Proto https HTTPS=on
#</VirtualHost>
#
# <VirtualHost>
# ServerName disk
# ServerAlias disk
# ServerAlias mail.disk
# DocumentRoot /var/www/html/disk
#
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /var/www/html/disk/cert/sandisk.crt
SSLCertificateKeyFile /var/www/html/disk/cert/sandisk.key


<Directory “/var/www/html/disk”>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
#
# ErrorLog /var/www/html/disk/error.log
# CustomLog /var/www/html/disk/requests.log combined
</VirtualHost>



ps Если раскомментировать строчку

# return 301 https://$host$request_uri;

сайт перестает работать, в чем причина не знаю. Все закомментированные строчки остались от проведенных экспериментов.
Хотелось узнать , что можно добавить или удалить в конфигах для правильной работы сайта?

Jula0071
17-11-2017, 19:27
Не рекомендуется ssl on;
Нужно добавлять опцию ssl в listen.
ps Если раскомментировать строчку
# return 301 https://$host$request_uri;
сайт перестает работать, в чем причина не знаю. Все закомментированные строчки остались от проведенных экспериментов.
Хотелось узнать , что можно добавить или удалить в конфигах для правильной работы сайта? »
Это потому что строка эта делает редирект 301 (Moved Permanently) на https версию сайта, у вас получается закольцованный редирект.

Это по nginx.

В итоге конфиг будет выглядеть примено так:


server {
listen 80;
server_name disk;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;

server_name disk;

ssl_certificate /var/www/html/disk/cert/sandisk.crt;
ssl_certificate_key /var/www/html/disk/cert/sandisk.key;

location / {
root /var/www/html/disk;
# index nginx.html;
autoindex on;
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $http_host;
# add_header [always];
}
location ~ ^.*\.html$ {
root /var/www/html/disk;
}
}


На апаче выключите всё касающееся SSL/TLS - трафик к этому апстриму идёт нешифрованный.

при этом сейчас сайт отдается по https но с задержкой, в которой оказывается страница недоступности. »
error.log ваш друг. Почитаешь логи - локализуешь проблему. И решишь. И становится ненужно выставлять себя безграмотным дурачком на форумах, даже с оправданиями.

za1
22-11-2017, 11:09
сайт отдается по https но с задержкой, в которой оказывается страница недоступности.

Так для справки, дело оказалось в том, что хром запомнил эту страницу и сам ее запрашивал, а после очистки истории все стало нормальмо.




© OSzone.net 2001-2012