2つのnginx server {}
ブロック間で構成ディレクティブを共有する方法はありますか?私のサイトのHTTPSおよびHTTPコンテンツはまったく同じ設定で提供されるため、ルールの重複を避けたいのですが。
現在、それはこのようなものです:
server {
listen 80;
...
}
server {
listen 443;
ssl on; # etc.
...
}
私は次のように何かをすることができますか?
server {
listen 80, 443;
...
if(port == 443) {
ssl on; #etc
}
}
これを次のように1つのサーバーブロックに結合できます。
server {
listen 80;
listen 443 default_server ssl;
# other directives
}
受け入れられた答えを明確にするために、あなたは省略する必要があります
SSL on;
そしてあなたは0.8.21以降のnginxバージョンのために以下が必要です
listen 443 ssl;
参照:
あなたが提案するような方法は知りませんが、確かに簡単でメンテナンス可能な方法があります。
共通のサーバー設定を別のファイル、つまり「serverFoo.conf」に移動してから、include
別のserver {}
ブロックは次のようになります:
server {
listen 80;
include serverFoo.conf;
}
server {
listen 443 ssl;
include serverFoo.conf;
}
すでに役立つ回答を拡張して、より完全な例を以下に示します。
server {
# Listen on port 80 and 443
# on both IPv4 and IPv6
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl;
listen [::]:443 ipv6only=on ssl;
# Set website folder
root /path/to/your/website;
# Enable SSL
ssl_certificate your-cert.pem;
ssl_certificate_key your-cert.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
}
Igor/Jauderの投稿に追加するだけで、特定のIPを聞いている場合は、以下を使用できます。
listen xxx.xxx.xxx.xxx;
listen xxx.xxx.xxx.xxx:443 default ssl;