Я хочу использовать nginx в macOS в качестве обратного прокси для серверного apache. Мне удалось запустить apache сервера macOS по умолчанию на портах 4780 для HTTP и 47443 для HTTPS. Конфиг находится здесь: /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf
Теперь часть nginx: я хочу, чтобы nginx проксировал apache сервера на поддомене server.example.com
.
Для HTTP он работает как шарм, но HTTPS - проблема, поскольку сертификат находится в apache, а не в nginx ...
Конфигурация HTTP:
server {
listen 80;
listen [::]:80;
server_name server.example.com;
#charset koi8-r;
access_log /logs/server.access.log main;
error_log /logs/server.error.log error;
location / {
proxy_pass http://localhost:4780;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Конфигурация HTTPS:
server {
listen 443;
listen [::]:443;
server_name server.example.com;
#charset koi8-r;
access_log /logs/server.access.log main;
error_log /logs/server.error.log error;
location / {
proxy_pass https://localhost:47443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Для HTTP это работает, но для HTTPS нет: Safari can't establish a secure connection to the server
Как это сделать?
Добавьте следующие две строки под server_name в конфигурации HTTPS:
ssl_certificate /path/to/your/certificate_file;
ssl_certificate_key /path/to/your/private_key_file;
и добавить ssl
параметр в директиве прослушивания.
Ваш конфиг будет выглядеть так:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name server.example.com;
ssl_certificate /path/to/your/certificate_file;
ssl_certificate_key /path/to/your/private_key_file;
#charset koi8-r;
access_log /logs/server.access.log main;
error_log /logs/server.error.log error;
location / {
proxy_pass https://localhost:47443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}