【发布时间】:2016-06-27 17:39:43
【问题描述】:
我使用 nginx 作为我的公共 EC2 实例的反向代理。我有:
- 一个漂亮、干净的公共领域
- AWS 生成的公共域 (*.compute-1.amazonaws.com)
- AWS 生成的公共 IP 地址
我希望所有流量都通过 HTTPS 传输到公共域。我试图通过创建一个配置为路由到我的应用程序的“主要”服务器块来实现这一点,并使用两个辅助服务器块来捕获所有其他流量并重定向到https://public.domain.com。这是我的配置的样子:
# "Primary" block
server {
listen 443 ssl;
server_name public.domain.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
# Other config; SSL config
}
# Catch-all redirects
server {
listen 80;
return 301 https://public.domain.com$request_uri;
}
server {
listen 443;
return 301 https://public.domain.com$request_uri;
}
在测试中,我得到以下结果:
- http://public.domain.com >> https://public.domain.com(正确)
- http://2308.compute-1.amazonaws.com >> https://public.domain.com(正确)
- https://2308.compute-1.amazonaws.com >> 无重定向(错误!)
- http://55.255.255.255 >> https://public.domain.com(正确)
- https://55.255.255.255 >> 无重定向(错误!)
为什么 nginx 没有将我的 HTTPS 流量重定向到我的公共域?网址匹配过程中没有使用server_name吗?
【问题讨论】:
标签: nginx amazon-ec2