これは非常に簡単なはずですが、設定に一日中苦労しています。これが私の conf ファイルです:
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript max;
~image/ max;
}
server {
listen 80;
server_name www.firstdomain.com firstdomain.com;
root /path/to/project/;
error_log /var/log/nginx/error.log;
}
server {
listen 443 ssl http2; # managed by Certbot
server_name www.firstdomain.com;
error_log /var/log/nginx/error.log;
proxy_read_timeout 90;
expires $expires;
location / {
include proxy_params;
proxy_read_timeout 90;
proxy_pass http://xx.xxx.xxx.xxx:8001;
}
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
alias /path/to/static/;
}
location /media/ {
alias /path/to/media/;
}
location /robots.txt {
alias /path/to/robots.txt;
}
ssl_certificate /etc/letsencrypt/live/firstdomain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/firstdomain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
if ($host = 'firstdomain.com') {
return 301 https://www.firstdomain.com$request_uri;
}
if ($scheme != "https") {
return 301 https://www.firstdomain.com$request_uri;
} # managed by Certbot
}
これは私の 2 番目のドメインで、sites-available 内の別のファイルに保存されています。
server {
listen 80;
server_name www.second-domain.com second-domain.com;
error_log my-domain-path/nginx.log;
location /
{
proxy_pass http://www.second-domain.com:8002;
}
}
両方のアプリはスーパーバイザーによって管理されており、両方とも正常に起動します。ただし、www.second-domain.com に移動すると、firstdomain.com のコンテンツが表示されます。
IP:PORT の場所に移動すると 2 番目のドメインのコンテンツが表示されるので、2 番目のドメインのコンテンツは機能して実行されていると確信していますが、ドメイン名では機能しません。
なぜ?
編集: nginx -t の結果をリクエストとして
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful