В связи с моим вопросом о как настроить обратный прокси с помощью nginx, Я застрял при настройке одного, для которого дополнительно требуется SSL-соединение.
У меня есть контейнер докеров, который предоставляет сопоставленный SSL-порт 4430 с моей хост-системой. Веб-сервер использует самозаверяющий сертификат.
В моем /etc/hosts
файл, я определил:
127.0.0.1 app.local
Конфигурация моего сервера nginx выглядит так:
server {
listen 80;
server_name app.local;
location / {
return https://$host$request_uri;
}
}
server {
listen 443;
server_name app.local;
location / {
proxy_pass https://127.0.0.1:4430;
}
}
Когда я открываю свое веб-приложение, используя https://127.0.0.1::4430
работает нормально. Тем не менее, я получаю предупреждение о сертификате в первый раз, которое затем должен разрешить.
Однако при подключении к нему через http://app.local
илиhttps://app.local
в моем браузере отображается:
SSL connection error
ERR_SSL_PROTOCOL_ERROR
Я также ожидал появления предупреждения о сертификате, которое я мог разрешить.
Как заставить работать обратный прокси при использовании SSL с nginx?
Чтобы отключить SSL на nginx:
а) В разделе сервера необходимо указать порт и ssl.
listen 192.168.2.26:443 ssl;
б) Затем в блоке сервера указываются параметры сертификатов и ssl.
ssl_certificate new-cert.cer;
ssl_certificate_key new-cert.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
Вы близки, я думаю (я сам новичок в Nginx), но вашему второму блоку сервера нужно немного больше ... У меня есть один на моем сервере с этим:
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
charset utf-8;
client_max_body_size 75M;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
Обратите внимание на следующее:
Строки ipv6, charset и client max body есть на моем сервере, но они не нужны для того, что вы здесь делаете. Вы можете назвать их как угодно и разместить где угодно, поэтому не зацикливайтесь на точном имени файла или местоположении, если вы храните свой где-то еще. Я люблю это делать именно так, и мои ls -l
вывод:
-rw-r--r-- 1 root root 1887 Oct 8 14:16 /etc/ssl/certs/example.com.crt
-rw-r----- 1 root ssl-cert 1704 Oct 8 13:47 /etc/ssl/private/example.com.key