Назад | Перейти на главную страницу

nginx в качестве обратного прокси для apache сервера macOS

Я хочу использовать 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;
    }
}