我在 Google Cloud Platform 中创建了 6 个实例
- 亚洲 2
- 2 在我们
- 2 在欧洲
我在每个区域有 3 个组
当我尝试使用我的应用程序时,我会随机发送到一个区域,无论我是在欧洲还是其他地方。
有关信息,我遵循了此文档https://cloud.google.com/compute/docs/load-balancing/http/cross-region-example
我只是添加一个区域并删除 http conf。
6个实例上没有流量,只有我。所有 6 个实例都可用,并且运行状况检查是肯定的。
这是我刚刚刷新页面时的最后一个结果:
- 亚洲
- 欧洲
- 我们
- 欧洲
- 亚洲
- 亚洲
如果您有任何想法或需要更多详细信息来帮助我,请询问,我会的。
更新 1
在每种情况下,我都有一个带有一个默认 conf 的 nginx:
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;
}
}
然后我有我的应用程序配置:
server {
listen 443 ssl;
server_name myapp.example.com www.myapp.example.com;
ssl_certificate /etc/nginx/ssl/secure.crt;
ssl_certificate_key /etc/nginx/ssl/mysecure.key;
root /usr/share/nginx/html/app/web;
error_log /var/log/nginx/myapp.example.com_error.log;
access_log /var/log/nginx/myapp.example.com.log;
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass php:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
}
当我去https://ip-load-balancer时,它工作得很好,总是得到最近的实例。
但是当我尝试https://myapp.example.com时,它出错了,我可以在日志中看到有一些重定向。此外,当我检查负载均衡器的日志时,他将请求发送到好的实例,但是我不明白如何遵循请求。
谢谢