Php 通过Amazon API网关和网络负载平衡器使用Nginx设置Wordpress时面临重定向问题
通过Amazon API网关和网络负载均衡器使用Nginx设置Wordpress时面临重定向问题。Php 通过Amazon API网关和网络负载平衡器使用Nginx设置Wordpress时面临重定向问题,php,wordpress,nginx,amazon-elb,amazon-api-gateway,Php,Wordpress,Nginx,Amazon Elb,Amazon Api Gateway,通过Amazon API网关和网络负载均衡器使用Nginx设置Wordpress时面临重定向问题。 描述:- 我们有自己的主网站xyz.com(由AmazonAPI网关和负载平衡器提供服务),希望我们的博客出现在xyz.com/blogs上。 因此,我们设置了Amazon API网关和负载平衡器,将for xyz.com/blogs的任何请求重定向到包含Wordpress和Nginx的EC2。 问题:- 我们面临的问题是,主页呈现得很好,但当我们尝试呈现任何其他页面时,例如:-xyz.com/b
描述:-
我们有自己的主网站xyz.com(由AmazonAPI网关和负载平衡器提供服务),希望我们的博客出现在xyz.com/blogs上。 因此,我们设置了Amazon API网关和负载平衡器,将for xyz.com/blogs的任何请求重定向到包含Wordpress和Nginx的EC2。
问题:-
我们面临的问题是,主页呈现得很好,但当我们尝试呈现任何其他页面时,例如:-xyz.com/blogs/my first post/或xyz.com/blogs/wp admin,它就会卡在那里,没有任何响应。作为初始调试的一部分,我们发现Wordpress正在重定向到网络负载均衡器url(根据我们的猜测),该url不可访问,我们没有得到任何响应。
这就是我们默认的nginx-conf的样子(/etc/nginx/conf.d/xyz_blogs.conf),我们从这个链接得到它=>
我们如何解决这个问题?
在此感谢您的帮助。
upstream php-app { # <-- change name of the upstram
# server unix:/tmp/php-cgi.socket; # <-- Remove this
# List of [IP:Port] OR list of [sockets] not both mixed
server 127.0.0.1:9000;
# server 127.0.0.1:9001; # example
# server 127.0.0.1:9002; # example
}
server {
listen 80 default_server; # <-- Add this line
listen [::]:80 default_server; # <-- Add this line
server_name xyz.com *.xyz.com;
root /var/www/html;
# index index.php; # <-- Will be removed, you app is provided by the socket/port
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location / { # Put this at the end, NGinx apply priority
proxy_pass http://php-app; # Add this line
}
}
这是:
upstream php-app { # <-- change name of the upstram
# server unix:/tmp/php-cgi.socket; # <-- Remove this
# List of [IP:Port] OR list of [sockets] not both mixed
server 127.0.0.1:9000;
# server 127.0.0.1:9001; # example
# server 127.0.0.1:9002; # example
}
server {
listen 80 default_server; # <-- Add this line
listen [::]:80 default_server; # <-- Add this line
server_name xyz.com *.xyz.com;
root /var/www/html;
# index index.php; # <-- Will be removed, you app is provided by the socket/port
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location / { # Put this at the end, NGinx apply priority
proxy_pass http://php-app; # Add this line
}
}
很抱歉迟发了这篇文章,但目前我们使用的解决方案可能伸缩性不大。我们所做的是将我们的网站和wordpress部署在同一台机器中,但部署在不同的容器中。因此,我们的网站运行在不同的容器中,wordpress运行在不同的容器中,但两者都存在于相同的EC2中。 我们使用wordpress中的nginx配置将请求重定向到其他容器。目前,我的nginx配置如下所示:
upstream php {
server unix:/tmp/php-cgi.socket;
server 127.0.0.1:9000;
}
server {
listen 80;
server_name xyz.com;
root /var/www/html;
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
index index.php;
location /blog {
try_files $uri $uri/ /blog/index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
}
location / {
rewrite ^/(.*) /$1 break;
proxy_pass http://xyz-container:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
如果我们能够在不同的EC2中部署wordpress容器,并且仍然能够实现这一点,那就太好了。
如果有人能在不同的EC2中为wordpress容器的问题提出一个更好的可伸缩工作解决方案,这将非常有帮助,而且会更好。
谢谢。很抱歉这篇文章太晚了,但目前我们使用的解决方案可能伸缩性不大。我们所做的是将我们的网站和wordpress部署在同一台机器中,但部署在不同的容器中。因此,我们的网站运行在不同的容器中,wordpress运行在不同的容器中,但两者都存在于相同的EC2中。 我们使用wordpress中的nginx配置将请求重定向到其他容器。目前,我的nginx配置如下所示:
upstream php {
server unix:/tmp/php-cgi.socket;
server 127.0.0.1:9000;
}
server {
listen 80;
server_name xyz.com;
root /var/www/html;
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
index index.php;
location /blog {
try_files $uri $uri/ /blog/index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
}
location / {
rewrite ^/(.*) /$1 break;
proxy_pass http://xyz-container:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
如果我们能够在不同的EC2中部署wordpress容器,并且仍然能够实现这一点,那就太好了。
如果有人能在不同的EC2中为wordpress容器的问题提出一个更好的可伸缩工作解决方案,这将非常有帮助,而且会更好。
谢谢。检查安全组以允许负载平衡器访问您的应用程序<代码>服务器名称xyz.com您可能需要添加“u”感谢回复@Jean JacquesMOIROUX Network Load Balancer能够访问该应用程序。另外,加上“u”并没有改变任何事情。还有其他想法吗?请检查安全组以允许LoadBalancer访问您的应用程序<代码>服务器名称xyz.com您可能需要添加“u”感谢回复@Jean JacquesMOIROUX Network Load Balancer能够访问该应用程序。另外,加上“u”并没有改变任何事情。还有其他想法吗?谢谢@Jean-JacquesMOIROUX->在做了更改之后,我发现了以下错误<代码>2020/02/28 11:06:13[错误]6613#6613:*3400 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:***(IP),服务器:xyz.com,请求:“GET/HTTP/1.1”,上游:http://127.0.0.1:9000/,主机:“xyz博客nlb someNLBGuid.elb.aws region.amazonaws.com”页面给出了
502坏网关nginx
更新1:在服务器名称上添加*.amazonaws.com
,看看发生了什么感谢@Jean-JacquesMOIROUX>的响应在做了更改后,我发现了下面的错误<代码>2020/02/28 11:06:13[错误]6613#6613:*3400 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:***(IP),服务器:xyz.com,请求:“GET/HTTP/1.1”,上游:http://127.0.0.1:9000/,主机:“xyz博客nlb someNLBGuid.elb.aws region.amazonaws.com”页面在服务器名称上给出了502坏网关nginx
更新1:add*.amazonaws.com
,看看发生了什么事情这是一个不同的问题,还是一个发布问题的解决方案?@Cristik这是我目前实施的发布问题的解决方案。但是一个更好的解决方案总是受欢迎的:)这是一个不同的问题还是一个针对已发布问题的解决方案?@Cristik这是针对已发布问题的解决方案,我目前已经实施。但更好的解决方案总是受欢迎的:)