系统相关
首页 > 系统相关> > 使用AWS Elastic Load balancer和Nginx的非www到www

使用AWS Elastic Load balancer和Nginx的非www到www

作者:互联网

我在example.com上运行了一个应用程序,现在我想将所有流量重定向到www.example.com,因为我们正在为您的网站与Akamai的CDN进行合作.我的域名停放在Route53中,将Elastic Load Balancer的CNAME添加到指向* .example.com的CNAME,我运行的是具有以下配置的nginx web服务器.如果我使用这个配置ELB抛出实例,现在domain.com工作正常,www.domain.com罚款,但重定向不会发生.

server {
        listen 80;
        server_name example.com;
#       rewrite ^    http://www.example.com$request_uri? permanent;
        root /home/ubuntu/apps/st/public;
        passenger_enabled on;
}

但我无法实现重定向.

还尝试添加其值为负载均衡器的cname的PTR.

正如您所见,尝试更改nginx配置

重写^ http://www.example.com$request_uri?常驻;

即使这不起作用.

一旦我添加上面的行,app实例就会跳出并且ELB抛出堆栈.

解决方案是什么,我一直在努力实现这个目标3-4天,它现在变成了一个夜晚的母马,请帮助我.我也在aws论坛中放了帖子和帖子,没有任何帮助.

解决方法:

我在重定向时遇到了同样的问题(使用与此处所示相同的nginx conf代码).

然后,我将我的重定向配置作为最后一个服务器{}块(在我的domain.com配置文件的末尾),并且ELB能够再次找到实例.

我没有看到它,但似乎vhost处理是按顺序完成的,所以当ELB命中我的服务器的IP地址时,它会落在第一个定义的服务器{}块上,在我的情况下是重定向. Nginx抛出一个301返回代码,ELB因为它不是200而吓坏了.

只是一个猜测.

所以,我的配置(真正的vhost在顶部,重定向是最后的):

less /etc/nginx/sites-enabled/domain.com

server {
    listen 80;
    server_name domain.com;
    .....
}

server {
    listen       80;
    server_name  www.domain.com;
    return       301 http://domain.com$request_uri;
}

标签:http-redirect,nginx,amazon-web-services,amazon-ec2,ubuntu-12-04
来源: https://codeday.me/bug/20190725/1534932.html