我502 Gateway在访问目录 ( http://example.com/dev/index.php) 中的 PHP 文件时遇到错误。日志只是这样说:
2011/09/30 23:47:54 [error] 31160#0: *35 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: domain.com, request: "GET /dev/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "domain.com"
Run Code Online (Sandbox Code Playgroud)
我以前从未经历过这种情况。此类502 Gateway错误的解决方案是什么?
这是nginx.conf:
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64; …Run Code Online (Sandbox Code Playgroud) 我是一名开发人员,我在设置托管时遇到了麻烦,我希望你们能帮助我。
我有一个要为朋友设置的域。当我使用简短形式时,URL 工作正常,例如http://example.com. 也就是说,页面呈现正确,我得到 HTTP/200 响应。http://www.example.com但是,当我尝试时,出现 HTTP/502 错误。Ping 它给了我,
Ping 请求找不到主机 www.example.com。请检查名称并重试。
我很难过,因为我不知道足够的术语来制定一个好的关键字搜索。任何人都可以给我一些关于我可能需要做什么来设置某种别名以便标准www.表单可以工作的信息吗?我不知道是否应该与我的注册商或我的托管公司交谈,向他们询问什么,或者在各种控制面板中的何处查看。
任何帮助——甚至只是命名不同的部分——都会有帮助。我从 CNAME 的域别名中不知道我的 TLD。
我正在运行 Nginx 并通过 FastCGI 将 php 请求代理到 PHP-FPM 进行处理。我会随机收到 502 Bad Gateway 错误页面 - 我可以通过非常快速地点击我的 PHP 网站/刷新页面一两分钟来重现这个问题。当我收到 502 错误页面时,我所要做的就是刷新浏览器并且页面正确刷新。
这是我的设置:
nginx/0.7.64 PHP 5.3.2 (fpm-fcgi)(构建时间:2010 年 4 月 1 日 06:42:04)Ubuntu 9.10(最新 2.6 Paravirt)
我使用这个 ./configure 指令编译了 PHP-FPM
./configure --enable-fpm --sysconfdir=/etc/php5/conf.d --with-config-file-path=/etc/php5/conf.d/php.ini --with-zlib --with -openssl --enable-zip --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-soap --enable-sockets --disable-cgi --with-curl --with -curlwrappers --with-gd --with-mcrypt --enable-memcache --with-mhash --with-jpeg-dir=/usr/local/lib --with-mysql=/usr/bin/mysql -- with-mysqli=/usr/bin/mysql_config --enable-pdo --with-pdo-mysql=/usr/bin/mysql --with-pdo-sqlite --with-pspell --with-snmp --with- sqlite --with-tidy --with-xmlrpc --with-xsl
我的 php-fpm.conf 看起来像这样(相关部分):
...
<value name="pm">
<value …Run Code Online (Sandbox Code Playgroud) 当大约 +10K 连接(netstat -an |grep 80 |wc -l)时,我经常在随机页面上收到此错误。当仍有 +10GB 的可用内存且服务器负载小于 3 时,就会发生这种情况。
我的相关配置:
/etc/php5/fpm/php.ini
memory_limit = 1024M
default_socket_timeout = 120
Run Code Online (Sandbox Code Playgroud)
/etc/php5/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 5
;pm.max_requests =20000 #uncommented with any value didn't fixed
request_terminate_timeout = 120s
Run Code Online (Sandbox Code Playgroud)
我还将上述 vlues(即 60 个孩子,10 个开始,10 个最大服务器)加倍,但无济于事。
/etc/nginx/nginx.conf
worker_connections 4024;
keepalive_timeout 10;
Run Code Online (Sandbox Code Playgroud)
Nginx 本身在 Varnish 和 memcached 后面是启用的。页面渲染通常非常快。
这似乎是一个很常见的问题,我找不到任何有用的解决方案,甚至无法分析可能的原因。因此,非常感谢您的提示/解决方案。
在 Ubuntu 14.04 x64 上新创建运行 PHP-FPM 的 LEMP 堆栈。试图访问我的 webroot 中的一些 PHP。浏览器显示 502 Bad Gateway 并且 Nginx 错误日志显示以下内容(我的 IP 和生产 IP 已删除):
TIME [error] 22838#0: *7 connect() failed (111: Connection refused) while connecting to upstream, client: [my personal IP], server: [production server IP], request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "[production server IP]"
Run Code Online (Sandbox Code Playgroud)
要确定 PHP-FPM 是否正在运行,我执行:
ps -waux | grep php5
Run Code Online (Sandbox Code Playgroud)
我回来回应:
root 22930 0.0 0.4 327432 16324 ? Ss 10:10 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
Run Code Online (Sandbox Code Playgroud)
如何确定 PHP-FPM 在哪个端口上运行或为什么它不在该端口上运行?谢谢你。
我正在尝试通过 nginx 为我的节点应用程序构建一个代理,认为如果节点应用程序失败或在端口上不可用,这会给我错误页面。
节点应用程序继续运行127.0.0.1:1337,我正在收听mydomain:8080并转发它。
server {
listen 8080;
server_name mydomain;
access_log /log/path/logging.log;
root /path/to/root/;
error_page 400 401 402 403 404 500 501 502 503 504 /error/index.html;
location / {
proxy_redirect off;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass http://127.0.0.1:1337;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我关闭节点应用程序并请求mydomain:8080. 不过,这是 nginx 的预期行为。我想要的是一个我可以定义的页面,该页面将在节点应用程序的服务关闭时显示。
任何想法如何做到这一点?
我在用 Apache 2.2.22
中的 Keepalive 指令之间有什么区别(如果有) /etc/apache2/apache2.conf
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
Run Code Online (Sandbox Code Playgroud)
以及/sites-enabled使用 ProxyPass 时配置中的指令
ProxyPass / http://localhost:8080/app/ connectiontimeout=28800 timeout=28800 Keepalive=On
Run Code Online (Sandbox Code Playgroud)