Nginx Apacheリバースプロキシを使用しています。複数のVHOSTがあり、SSLをサポートする単一のnginxvhostファイルでそれらすべてを提供したいと考えています。
私のサーバーブロックは
server {
listen 80;
server_name _;
root /var/www/$Host/web;
access_log /var/log/mylogs/httpd/$Host/access.log;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://SERVERIP:8090;
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;
}
location ~ /\. {
deny all;
}
}
これはすべてのサイトでSSLなしでもうまく機能しますが、以下のSSLサポートで同じことを行うと次のようになります。
server {
listen 80;
server_name _;
ssl on;
ssl_certificate /var/www/$Host/ssl/$Host-le.crt;
ssl_certificate_key /var/www/$Host/ssl/$Host-le.key;
root /var/www/$Host/web;
access_log /var/log/mylogs/httpd/$Host/access.log;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
proxy_pass http://MYIP:8090;
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;
}
location ~ /\. {
deny all;
}
}
このようなエラーが発生しました
ssl_certificate /var/www/$Host/ssl/$Host-le.crt not found
nginx config test failed
私の仮想ホストWebファイルはこの形式です
/var/www/domain1.com/web /var/www/domain2.com/web /var/www/domain3.com/web
そして彼らのSSL証明書とキーは
/var/www/domain1.com/ssl /var/www/domain2.com/ssl /var/www/domain3.com/ssl
私を助けてください、私は初心者でまだ学んでいます..。
$ssl_server_name
の代わりに$Host
変数を使用してください。
Nginx1.15.9およびOpenSSL1.0.2バージョン以降で使用できます。 http://nginx.org/ru/docs/http/ngx_http_ssl_module.html
ssl_certificate $ssl_server_name.crt;
ssl_certificate_key $ssl_server_name.key;