ユーザーが自分のWebサイトのポートフォリオを作成できるWebサイトがあります。ユーザーは、ドメインのAレコードを変更し、サーバーのIPアドレスをレコードに入力するだけで、Webサイト(user1.example.com)にマップされます。私の問題は、これをテストするためにドメイン(example.com)を購入し、それがこのサービスを使用できる実際のWebサイトのホームページにルーティングすることです。
ユーザーが自分のWebサイトにアクセスできる唯一の方法は、次の方法です。http://example.com:3000
-3000は、私のNode.jsアプリが実行されるポートです。私のNginx設定は以下にあります、誰かが私に骨を投げることができますか?
server {
listen 80;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/ssl/example.com/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
server_name example.com *.example.com "";
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
root /opt/33i/;
# Perfect forward secrecy
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/example.com/dhparams.pem;
ssl_ciphers ;
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_Host;
proxy_set_header X-Url-Scheme $scheme;
proxy_redirect off;
proxy_max_temp_file_size 0;
}
}
何か案は?これは私を怒らせています!
問題はserver_name
行にあると思います。
現在実装されているため、次の種類のリクエストに一致します。
Host:
ヘッダーはexample.com
ですHost:
で終わるヘッダー.example.com
Host:
ヘッダーがありませんこれは、この構成が任意のドメインと一致しないことを意味します。これは、あなたが望んでいることのように見えます。
これで、構成に次のような別のserver
ブロックがある可能性があります。
443 ssldefault_serverをリッスンします。
このディレクティブを含む仮想ホストは、他の方法では一致しないリクエストのキャッチオール仮想ホストです。
したがって、問題を修正するには、現在のserver
ブロックからdefault_server
ディレクティブを削除し、このブロックのlisten
ディレクティブにdefault_server
を追加する必要があります。 。