ฉันต้องการใช้ nginx บน macOS เป็น reverse proxy สำหรับ apache ของเซิร์ฟเวอร์ ฉันจัดการ apache ของ macOS Server เริ่มต้นให้ทำงานบนพอร์ต 4780 สำหรับ HTTP และ 47443 สำหรับ HTTPS Config อยู่ที่นี่:/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

มันสามารถทำได้อย่างไร?

answer

เพิ่มสองบรรทัดต่อไปนี้ด้านล่าง 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;
    }
}