有没有办法在两个 nginxserver {}
块之间共享配置指令?我想避免重复规则,因为我网站的 HTTPS 和 HTTP 内容使用完全相同的配置。
目前,它是这样的:
server {
listen 80;
...
}
server {
listen 443;
ssl on; # etc.
...
}
Run Code Online (Sandbox Code Playgroud)
我可以做一些类似的事情:
server {
listen 80, 443;
...
if(port == 443) {
ssl on; #etc
}
}
Run Code Online (Sandbox Code Playgroud)
Jau*_* Ho 292
您可以将其合并为一个服务器块,如下所示:
server {
listen 80;
listen 443 default_server ssl;
# other directives
}
Run Code Online (Sandbox Code Playgroud)
小智 92
为了澄清接受的答案,您需要省略
SSL on;
Run Code Online (Sandbox Code Playgroud)
并且您只需要以下 0.8.21 之后的 nginx 版本
listen 443 ssl;
Run Code Online (Sandbox Code Playgroud)
参考:
Nginx 文档 - 配置单个 HTTP/HTTPS 服务器
dwc*_*dwc 32
我不知道像您建议的那样的方法,但肯定有一种简单且可维护的方法。
将常见的服务器设置移动到一个单独的文件中,即“serverFoo.conf”,然后将include
它放在单独的server {}
块中,如下所示:
server {
listen 80;
include serverFoo.conf;
}
server {
listen 443 ssl;
include serverFoo.conf;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*han 12
扩展已经有用的答案,这里有一个更完整的例子:
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
只是添加到 Igor/Jauder 的帖子中,如果您正在收听特定的 IP,则可以使用:
listen xxx.xxx.xxx.xxx;
listen xxx.xxx.xxx.xxx:443 default ssl;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
194495 次 |
最近记录: |