新しいSSL証明書をインストールし、それを使用するようにNginxを設定しました。ただし、サイトでHTTPSをヒットしようとすると、リクエストがタイムアウトします。ポート80でドメインにTelnetで接続すると、接続されますが、ポート443でタイムアウトになります。Ubuntuに接続を妨げるデフォルトがあるかどうかはわかりません。 cURLもHTTPSアドレスにタイムアウトしますが、通常のHTTPに応答します。
UFWステータスは次のことを示しています。
443 ALLOW Anywhere
netstat -aは次のことを示しています:
tcp 0 0 *:https *:* LISTEN
nmapローカルホストは次のことを示しています。
443/tcp open https
Nginx構成の関連ブロックは次のとおりです。
server {
listen 443;
listen [::]:80 ipv6only=on;
listen 80;
root /path/to/app;
server_name mydomain.com
ssl on;
ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://mydomain.com;
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
編集:nginx構成オプションの全範囲を試しましたが、それがセットアップであるかどうかは本当に疑わしいです。 ssl-bundle.crtが失敗した場合、タイムアウトが発生しますか?もしそうなら、私はサポートのためにPositiveSSLに戻ることができます。
これを試して:
server {
listen 443 ssl;
listen [::]:80 ipv6only=on;
listen 80;
root /path/to/app;
server_name mydomain.com
ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://mydomain.com;
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
(ssl on;
を削除し、ssl
をlisten 443;
に追加します)
問題はNginxでも、誰かが助けてくれるものでもなかったので、将来誰かがこの問題を抱えている場合に備えて、ここに残しておきます。
問題は、私が無料プランを利用していたときに、Cloudflareでポート443が閉じられたことでした。無料プランではSSLをサポートしていません。
Steffenのコメントに同意したいと思います(同じサーバーブロックで443をリッスンして80をリッスンします)。
異なるサーバーブロックでHTTPとHTTPSを処理してください。 2番目のlistenディレクティブが最初のlistenディレクティブを上書きしたと思います。さらに、ポート443のlisten-directivesの「ssl」キーワードを見逃しました。
server {
listen 80;
listen [::]:80 ipv6only=on;
root /path/to/app;
server_name mydomain.com
location / {
proxy_pass http://mydomain.com;
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
root /path/to/app;
server_name mydomain.com
ssl on;
ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://mydomain.com;
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ユーザーxoferが報告したように、1つのサーバーブロックにHTTPとHTTPSを含めることができます。したがって、このオールインワンソリューションの例も同様です。
server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
root /path/to/app;
server_name mydomain.com
ssl on;
ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://mydomain.com;
proxy_set_header Host $Host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}