it-swarm-ja.com

googleロードバランサー+ nginx + symfony2

スケーラブルなsymfony2アプリを構成しようとしているので、このページを読みます https://cloud.google.com/compute/docs/load-balancing/http/cross-region-example

私は彼らが言ったようにすべてのことをしました、単純なnginxconfで働いています:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ /index.html;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }
}

それで私はポジティブチェックヘルスを取得し、試してみると http:// ip_load_balancer nginxのデフォルトページを取得します。

しかし、実際のnginxのconfを試してみると:

server {
listen 80;
server_name myapp-public.com;
root /usr/share/nginx/html/app-public/web;


recursive_error_pages off;

error_log /var/log/nginx/app_error.log;
access_log /var/log/nginx/app_access.log;

location / {
    try_files $uri /app.php$is_args$args;
}

# PROD
location ~ ^/app\.php(/|$) {
    internal;
    fastcgi_pass php:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_index  index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;
    fastcgi_intercept_errors on;
}
}

http:// ip_load_blancer を試してみると、502サーバーエラーが発生します。しかし、 http:// ip_vm1 を試してみると、アプリケーションが取得されます(すべてからhttpアクセスを開いてテストします)。

また、すべてのチェックヘルスが失敗します。何が悪いのかよくわかりません。

ありがとう。

2
anthony

ここにあなたのコメントを読んだ後、私が思うのは私の問題でした@George

ヘルスチェックが失敗した場合、特定のインスタンスへのリダイレクトがないことに注意する必要があります。 ==>だから私はnginxのデフォルトのconfを作成します(confにsslを追加します)

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://$Host$request_uri;
}



server {
    listen 443 ssl;
    server_name _;
    ssl_certificate /etc/nginx/ssl/secure.crt;
    ssl_certificate_key /etc/nginx/ssl/mysecure.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

次に、ロードバランサーからのトラフィックと、Googleからインスタンスのポート80(私の場合は443)へのヘルスチェックを受け入れる必要があります。

==> https://cloud.google.com/compute/docs/load-balancing/http/cross-region-example#shutting_off_https_access_from_everywhere_but_the_load_balancing_service

これがお役に立てば幸いです。詳細が必要な場合、または何かがわからない場合は、教えてください。詳しく説明します。

PS:待ってごめんなさい

0
anthony