Existe-t-il un moyen de partager des directives de configuration entre deux nginx server {}
blocs? Je voudrais éviter de dupliquer les règles, car le contenu HTTPS et HTTP de mon site est servi avec la même configuration exacte.
Actuellement, c'est comme ça:
server {
listen 80;
...
}
server {
listen 443;
ssl on; # etc.
...
}
Puis-je faire quelque chose comme:
server {
listen 80, 443;
...
if(port == 443) {
ssl on; #etc
}
}
Vous pouvez combiner cela en un seul bloc serveur comme ceci:
server {
listen 80;
listen 443 default_server ssl;
# other directives
}
Pour clarifier la réponse acceptée, vous devez omettre
SSL on;
et vous avez juste besoin des éléments suivants pour la version nginx après 0.8.21
listen 443 ssl;
Référence:
Je ne connais pas un moyen comme vous le suggérez, mais il y a certainement un moyen facile et maintenable.
Déplacez les paramètres de serveur communs dans un fichier séparé, c'est-à-dire "serverFoo.conf" puis include
dans _ server {}
blocs comme ceci:
server {
listen 80;
include serverFoo.conf;
}
server {
listen 443 ssl;
include serverFoo.conf;
}
En développant les réponses déjà utiles, voici un exemple plus complet:
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;
}
Juste pour ajouter au post d'Igor/Jauder, si vous écoutez une adresse IP spécifique, vous pouvez utiliser:
listen xxx.xxx.xxx.xxx;
listen xxx.xxx.xxx.xxx:443 default ssl;