解决nginx 503 Service Temporarily Unavailable方法示例

最近网站刷新后经常出现503 Service Temporarily Unavailable错误,有时有可以,联想到最近在nginx.conf里做了单ip访问次数限制,(limit_req_zone $binary_remote_addr zone=allips:20m rate=20r/s;) 把这个数量放大后在刷新发现问题解决。(还顺便把这个改大了 limit_req zone=allips burst=50 nodelay;   )为了证实该问题,反复改动该数量测试发现问题确实在这。这个数量设得太小有问题,通过fiddler发现web页面刷新一下,因为页面上引用的js,css,图片都算一个连接。所以单个页面刷新下就有可能刷爆这个限制,超过这个限制就会提示503 Service Temporarily Unavailable。

附上nginx.conf

#user nobody;
worker_processes 1;
#worker_rlimit_nofile 100000;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid    logs/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include    mime.types;
  default_type application/octet-stream;

##cache##
 proxy_connect_timeout 5;
 proxy_read_timeout 60;
 proxy_send_timeout 5;
 proxy_buffer_size 16k;
 proxy_buffers 4 64k;
 proxy_busy_buffers_size 128k;
 proxy_temp_file_write_size 128k;
 proxy_temp_path /home/temp_dir;
 proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
 ##end##
#limit per ip per second access times 10
limit_req_zone $binary_remote_addr zone=allips:20m rate=20r/s;

  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  #         '$status $body_bytes_sent "$http_referer" '
  #         '"$http_user_agent" "$http_x_forwarded_for"';

  #access_log logs/access.log main;

  sendfile    on;
  #tcp_nopush   on;

  #keepalive_timeout 0;
  keepalive_timeout 65;

  #gzip on;
upstream myweb80{
  ip_hash;
  server 192.168.3.105:80;
  server 192.168.3.103:80;
}

upstream myweb8080{
  ip_hash;
  server 192.168.3.222:10080;
  #server 192.168.3.103:8080;
 }
upstream myweb10086{
  ip_hash;
  server 192.168.3.102:10086;
  server 192.168.3.108:10086;
 }
upstream myweb443{
  ip_hash;
  server 192.168.3.105:443;
  server 192.168.3.103:443;
 } 

  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  server {
    listen    80;
    allow  218.17.158.2;
allow 127.0.0.0/24;
allow 192.168.0.0/16;
allow 58.251.130.1;
allow 183.239.167.3;
allow 61.145.164.1;
deny  all;
server_name myweb.com;
    location / {
        proxy_pass http://myweb80;
proxy_set_header X-Real-IP $remote_addr;
limit_req zone=allips burst=50 nodelay;
    }
  }

  server {
    listen    8080;
allow  218.17.158.2;
allow 127.0.0.0/24;
allow 192.168.0.0/16;
allow 58.251.130.1;
allow 183.239.167.3;
allow 61.145.164.1;
deny  all;
    location / {
        proxy_pass http://myweb8080;
proxy_set_header X-Real-IP $remote_addr;
limit_req zone=allips burst=50 nodelay;
    }
  }

# HTTPS server
  #
  server {
    listen    10086 ssl;
    server_name localhost;
allow  218.17.158.2;
allow 127.0.0.0/24;
allow 192.168.0.0/16;
allow 58.251.130.1;
allow 183.239.167.3;
allow 61.145.164.1;
#deny  all;
    ssl_certificate   ssl/1_www.myweb.com_bundle.crt;
    ssl_certificate_key ssl/2_www.myweb.com.key;

  #  ssl_session_cache  shared:SSL:1m;
  #  ssl_session_timeout 5m;

  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers on;

    location / {
   proxy_pass https:// myweb10086;
   #roft html;
   #index index.html index.htm;
    }
  }

  服务器{
    listen 443 ssl;
    server_name localhost;

    ssl_certificate ssl / 1_www.myweb.com_bundle.crt;
    ssl_certificate_key ssl / 2_www.myweb.com.key;

  #ssl_session_cache共享:SSL:1m;
  #ssl_session_timeout 5m;

  #ssl_ciphers HIGH:!aNULL:!MD5;
  #ssl_prefer_server_ciphers on;

    location / {
   proxy_pass https:// myweb443;
   #roft html;
   #roft html;
   #index index.html index.htm;
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • nginx启动服务提示98: Address already in use错误的解决

    前言 今日到公司就被其他人告知官网所有页面打开都是502.平常都是正常的怎么就突然页面就502了呢,下面就开始troubleshooting.下面来看看详细的解决过程: 发现问题 公司web服务器,是搭建在centos system 上的lnmp环境,首先网站502肯定是服务器端错误,首先想到是不是nginx服务挂掉了,然后执行service nginx status,查看下nginx的状态:nginx is stopped,果然是nginx服务挂了. 执行service nginx start

  • Nginx服务器中配置404错误页面时一些值得注意的地方

    换了VPS之后的某一天,在Google管理员工具控制台下看到了大量的"软404"错误,查找了一些资料之后发现是自己在Nginx下配置404页面的方法不对才导致了错误的产生,在此记录一下Nginx下正确的404页面配置方法. 404是一个相应代码,表示"页面无法找到"(Page Not Found),Google关于"软404"给出的说法是: 复制代码 代码如下: Instead of returning a 404 response code f

  • Nginx启动常见错误及解决方法

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)错误,进到logs文件发现的确没有nginx.pid文件 [root@localhost sbin]# ./nginx -s reload nginx: [error]

  • 权限问题导致Nginx 403 Forbidden错误的解决方法

    今天在一个新的环境上安装nginx,结果访问的都是403 通常显示403我立马都会想到路径配置不对,但我仔细看了一下,目录路径没问题: nginx.conf: 复制代码 代码如下: server {         listen       80;         server_name  localhost;           #charset koi8-r;           #access_log  logs/host.access.log  main;           locat

  • NGINX下配置404错误页面的方法分享

    1. 创建自己的404.html页面 2.更改nginx.conf在http定义区域加入: fastcgi_intercept_errors on; 3.更改nginx.conf(或单独网站配置文件,例如在nginx -> sites-enabled下的站点配置文件 ) 中在server 区域加入: error_page 404 = /404.html 或者 error_page 404 = http://www.xxx.com/404.html 4.更改后重启nginx,,测试nginx.co

  • 深入探讨:Nginx 502 Bad Gateway错误的解决方法

    max_children=40 , 每个children平均占用20M-30M内存,children越多,可以同时接受的并发数量越多,一般children的值是网站最高并发数+浮动值,这值再×内存占用,就是你需要用到的内存.max_requests = N 是指当每个children接受了N次请求以后,就会把自己杀死,然后重新建立一个children.PV / max_children = 每一个children接受的request次数[ 默认预设浏览一个只调用一次PHP程序,或许异步调用呢?接

  • 为Nginx自定义404,502错误页面的方法

    首先打开nginx.conf文件,在fastcgi_temp_file_write_size 128k; 下面添加 fastcgi_intercept_errors on;注意,包括;号 然后在需要定义的站点的里面添加 error_page 404 = /404.htm;例如: 复制代码 代码如下: server { listen 80; server_name www.deepvps.com; index index.html index.htm index.php; error_page 4

  • Nginx 502 bad gateway和Nginx 504 Gateway Time-out错误解决方法 错误解决办法

    最近服务器宕机的现象比较频繁,临下班时分,G给挂掉了,502 Bad Gateway Nginx,不由得让我想起之前的504 Gateway Time-out,两者应该有点联系,一定得弄清楚.Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI. 解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-o

  • Nginx 502 Bad Gateway错误常见的4种原因和解决方法

    1.FastCGI worker进程数是否不够 通过命令查看服务器上一共开了多少的 php-cgi 进程 复制代码 代码如下: ps -fe |grep "php" | grep -v "grep" | wc -l 使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求 复制代码 代码如下: netstat -anop | grep "php" | grep -v "grep" | wc -l 接近配置文件中设置的数

  • nginx提示:500 Internal Server Error错误的解决方法

    现在越来越多的站点开始用 Nginx ,("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布. 在高并发连接的情况下,Nginx是Apache服务器不错的替代品.Nginx同时也可以作为7层负载均衡服务器来使用.根据测试结果,Nginx 0.6

随机推荐