Laravel Forge - 重定向循环 - SSL和负载均衡器

时间:2015-12-03 22:43:27

标签: laravel nginx

我刚用laravel forge设置了3台服务器。 1个负载均衡器和2个包含我的laravel项目的文件服务器。

我已在所有三台服务器上安装了SSL证书,并将我的域指向负载均衡器服务器IP地址。

然而,当我现在访问我的网站url时,我得到一个重定向循环。 有人有任何建议吗?

以下是负载均衡器的配置(已删除域名):

server {
    listen 80;
    server_name mydomain.no;
    return 301 https://mydomain.no$request_uri;
}

include upstreams/mydomain.no;

server {
    listen 443 ssl;
    server_name .mydomain.no;

    # FORGE SSL (DO NOT REMOVE!)
    ssl_certificate /etc/nginx/ssl/mydomain.no/16768/server.crt;
    ssl_certificate_key /etc/nginx/ssl/mydomain.no/16768/server.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    charset utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/mydomain.no-error.log error;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://116816_app/;
        proxy_redirect off;

        # Handle Web Socket connections
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

这是来自我的文件服务器的nginx conf:

server {
    listen 80;
    server_name mydomain.no;
    return 301 https://mydomain.no$request_uri;
}

server {
    listen 443 ssl;
    server_name .mydomain.no;
    root /home/forge/mydomain.no/httpdocs/public;

    # FORGE SSL (DO NOT REMOVE!)
    ssl_certificate /etc/nginx/ssl/mydomain.no/16782/server.crt;
    ssl_certificate_key /etc/nginx/ssl/mydomain.no/16782/server.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/mydomain.no-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

server {
    listen 80;
    server_name mydomain.no;
    return 301 https://mydomain.no$request_uri;
}

server {
    listen 443 ssl;
    server_name .mydomain.no;
    root /home/forge/mydomain.no/httpdocs/public;

    # FORGE SSL (DO NOT REMOVE!)
    ssl_certificate /etc/nginx/ssl/mydomain.no/16783/server.crt;
    ssl_certificate_key /etc/nginx/ssl/mydomain.no/16783/server.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/mydomain.no-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

1 个答案:

答案 0 :(得分:0)

您正在使用http方案连接到您的上游。这会导致它重定向到https,然后负载均衡器使用proxy_pass https://116816_app/; 向上游路由。因此循环。

使用http连接上游:

server {
  listen 80;
  listen 443 ssl;
  ...
}

或允许您的上游文件服务器使用{"123","1.1","321","12","345","345"} 接受连接:

{{"123","1.1"},{"321","12"},{"345","345"}}