Ang*_*ira 16 ssl https proxy wildcard-subdomain nginx
我需要使用Nginx作为SSL代理,它根据子域将流量转发到不同的后端.
我似乎无处不在,我应该定义多个"服务器{"部分,但这对SSL不起作用.这样做我将始终在第一个虚拟主机中处理SSL,因为在处理https流量之前,服务器名称是未知的.
场景:
需要访问的多个后端如下所示:
https://one.mysite.com/ -> http://localhost:8080
https://two.mysite.com/ -> http://localhost:8090
Run Code Online (Sandbox Code Playgroud)Nginx说"如果"是邪恶的:http://wiki.nginx.org/IfIsEvil,但我还能做些什么?
我试过这个,但它不起作用,我得到500错误但错误日志中没有任何内容.
server {
listen 443;
server_name *.mysite.com;
ssl on;
ssl_certificate ssl/mysite.com.crt;
ssl_certificate_key ssl/mysite.com.key;
location / {
if ($server_name ~ "one.mysite.com") {
proxy_pass http://localhost:8080;
}
if ($server_name ~ "two.mysite.com") {
proxy_pass http://localhost:8090;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人设法用Nginx完成这个任务?任何帮助/替代方案,链接,将不胜感激.
Ang*_*ira 27
我发现解决方案基本上是在"服务器"块之外定义SSL选项和SSL证书:
ssl_certificate ssl/mysite.com.crt;
ssl_certificate_key ssl/mysite.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+EXP;
ssl_prefer_server_ciphers on;
server {
listen 80;
server_name *.mysite.com;
rewrite ^ https://$host$request_uri? permanent;
}
server {
listen 443 ssl;
server_name one.mysite.com;
ssl on;
location / {
proxy_pass http://localhost:8080;
}
}
server {
listen 443 ssl;
server_name two.mysite.com;
ssl on;
location / {
proxy_pass http://localhost:8090;
}
}
Run Code Online (Sandbox Code Playgroud)
关键事项:
归档时间: |
|
查看次数: |
23982 次 |
最近记录: |