1.7. FAQ

1.7.1. 405 Not Allowed?

1.7.1.1. 405 Not Allowed?

1.7.1.1.


405 Not Allowed?


静态页面POST会提示405 Not Allowed错误.

# curl -d name=neo http://www.mydoamin.com/index.html
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
server {
    listen       80 default;
    server_name  myid.mydomain.com;

    charset utf-8;
    access_log  /var/log/nginx/myid.mydomain.com.access.log  main;

    if ($http_user_agent ~* ^$){
      return 412;
    }
    ###########################

    location / {
        root   /www/mydomain.com/myid.mydomain.com;
        index  index.html index.php;
        #error_page 405 =200 $request_filename;
    }

    #error_page  404              /404.html;
    #
    error_page 405 =200 @405;
    location @405 {
        #proxy_set_header  Host            $host;
        proxy_method GET;
        proxy_pass http://myid.mydomain.com;

    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
					

1.7.2. 502 Bad Gateway?

1.7.2.1. 502 Bad Gateway

1.7.2.1.


502 Bad Gateway

error.log 提示:

upstream sent too big header while reading response header from upstream?


修改fastcgi配置

location ~ \.php$ {

	fastcgi_buffers 8 16k;
	fastcgi_buffer_size 32k;
	。。。
	。。。
}
					

1.7.3. 413 Request Entity Too Large

1.7.3.1. 413 Request Entity Too Large

1.7.3.1.


413 Request Entity Too Large

error.log 提示:

client intended to send too large body


client_max_body_size 8m;

修改 /etc/nginx/nginx.conf 文件。

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

    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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    server_tokens off;
    gzip  on;
    gzip_min_length 1k;
    gzip_types text/plain text/html text/css application/javascript text/javascript application/x-javascript text/xml application/xml application/xml+rss application/json;
    gzip_vary on;

    client_max_body_size 8m;

    include /etc/nginx/conf.d/*.conf;
}
					

1.7.4. 502 Bad Gateway?

1.7.4.1. 502 Bad Gateway

1.7.4.1.


502 Bad Gateway

error.log 提示:

upstream sent too big header while reading response header from upstream?


修改fastcgi配置

location ~ \.php$ {

	fastcgi_buffers 8 16k;
	fastcgi_buffer_size 32k;
	。。。
	。。。
}
					

1.7.5. 499 Client Closed Request

1.7.5.1. Nginx access.log 日志显示

1.7.5.1.


Nginx access.log 日志显示

111.85.11.15 - - [25/Jun/2016:19:20:35 +0800] "GET /xxx/xxx/xxx.jsp HTTP/1.1" 499 88 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36 JianKongBao Monitor 1.1"


配置 proxy_ignore_client_abort on;

    location / {

		ssi on;
		proxy_set_header Accept-Encoding "";
		proxy_pass http://127.0.0.1:8080;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_ignore_client_abort  on;
    }
					

1.7.6. proxy_pass

nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /etc/nginx/conf.d/www.mydomain.com.conf:25
nginx: configuration file /etc/nginx/nginx.conf test failed
		

在location,if中使用证则匹配proxy_pass末尾不能写/

	if ($request_uri ~* "^/info/{cn|tw}/{news|info}/\d\.html") {
		proxy_pass http://info.example.com/;
		break;
	}

    location ~ ^/info/ {
                proxy_pass http://info.example.com/;
                break;
    }
		

proxy_pass http://info.example.com/; 改为 proxy_pass http://info.example.com; 可以解决

1.7.7. proxy_pass SESSION 丢失问题

如果用户Cookie信息没有经过 proxy_pass 传递给最终服务器,SESSION信息将丢失,解决方案

proxy_set_header   Cookie $http_cookie;
		

1.7.8. [alert] 55785#0: *11449 socket() failed (24: Too many open files) while connecting to upstream

配置 worker_rlimit_nofile 参数即可

user  nginx;
worker_processes  8;
worker_rlimit_nofile 65530;
		

配置 ulimit 也能达到同样效果,但我更喜欢 worker_rlimit_nofile 因为它仅仅作用于nginx,而不是全局配置。

1.7.9. server_name 与 SSI 注意事项

server_name www.example.com www.example.net www.example.org;
		

下来SSI标签无论你使用那个域名访问,输出永远是server_name的第一域名www.example.com

<!--#echo var="SERVER_NAME"-->

需要通过SERVER_NAME判定展示不同结果时需要注意。

1.7.10. location 跨 document_root 引用,引用 document_root 之外的资源

下面的例子是 Document root 是 /www/netkiller.com/m.netkiller.com, 我们需要 /www/netkiller.com/www.netkiller.com 中的资源。

server {
    listen       80;
    server_name  m.netkiller.com;

    charset utf-8;
    access_log  /var/log/nginx/m.netkiller.com.access.log;
    error_log  /var/log/nginx/m.netkiller.com.error.log;

    location / {
		root /www/netkiller.com/m.netkiller.com;
		index.html
    }

    location /module {
        root /www/netkiller.com/www.netkiller.com;
    }	

}
server {
    listen       80;
    server_name  m.netkiller.com;

    charset utf-8;
    access_log  /var/log/nginx/m.netkiller.com.access.log;
    error_log  /var/log/nginx/m.netkiller.com.error.log;

    location / {
		root /www/netkiller.com/m.netkiller.com;
		index.html
    }

    location ^~ /module/ {
        root /www/netkiller.com/www.netkiller.com;
    }	

}

上面的例子location /module 是指 /www/netkiller.com/www.netkiller.com + /module,如果 /www/netkiller.com/www.netkiller.com 目录下面没有 module 目录是出现404, error.log显示 "/www/netkiller.cn/www.netkiller.cn/module/index.html" failed (2: No such file or directory)

1.7.11. nginx: [warn] duplicate MIME type "text/html" in /etc/nginx/nginx.conf

text/html 是 gzip_types 默认值,所以不要将text/html加入到gzip_types列表内

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-11-05 12:26:27

1.7. FAQ的相关文章

UML Use Case Diagrams: Tips and FAQ

UML Use Case Diagrams: Tips and FAQ 来源:http://www.andrew.cmu.edu/course/90-754/umlucdfaq.html Contents: What is a UML Use Case Diagram (UCD), and when should I use it? How do you know who the actors are in a UCD? How do you know what to put in the "S

DotNET WinForm FAQ 16个(上)

Dotnet WinForm 建立 FAQ 小气的神 2001.08.31 如何建立你的第一个窗体,希望下面的说明可以成为你快速开始的一个指引. 1. 如何设置一个From的边界 2. 如何建立一个透明的From 3. 如何设置窗体在屏幕中的位置 4. 如何使最小化和最大化按钮不可用 5. 如何使一个窗体不见 6. 如何设置使窗体成为非矩形的. 7. 如何使一个窗体在屏幕的最顶端. 8. 如何显示一个Model和非Model的窗体 9. 如何制作一个MDI的窗体 10. 如何将你的窗体不显示在任

交互设计实例:如何设计高效的faq页面

文章描述:设计高效的faq页面. 这阵子没有精力完整翻译和发到译言(  现下正渐入状态,预计写博客量会逐步提升回来),简短做一个概要翻译,为近期工作需要做一个参考. 其中提到,维护良好的faq能令用户有参与感,很有体会,当寻找一个问题,赫然发现在置顶常见第一条的时候,有一种强烈的"找到组织"的感觉. 不过,faq还有一种挑战这里没提到,在充分收集到最常提出问题的基础上,对于一些功能.服务的缺陷如何提示,是坦然还是回避,这好像已经是另一个范畴的讨论了.ok下面是简短概要翻译,完整版和例子

JSP - FAQ (4)

js 27) How are servlets and JSP pages related? TOC JSP pages are focused around HTML (or XML) with Java codes and JSP tags inside them. When a web server that has JSP support is asked for a JSP page, it checks to see if it has already compiled the pa

JSP - FAQ (1)

js Java Server Pages Frequently Asked Questions Maintainer: Richard Vowles, rvowles@esperanto.org.nz (http://www.esperanto.org.nz) QuestionsWhat is JSP? What version is the current version of JSP? Where can I get the specification for JSP? Who suppor

ORA FAQ 性能调整系列之——压缩索引会提高性能么?

索引|性能|压缩 Will compressing my indexes improve performance ?压缩索引会提高性能么? Author's name: Jonathan Lewis Author's Email: Jonathan@jlcomp.demon.co.uk Date written: 26th Feb 2003 Oracle version(s): 8.1 - 9.2 Compressed indexes have been around for a couple

ORA FAQ 性能调整系列之——Oracle 9与Oracle 8中CPU

oracle|性能 What is the difference between cpu_costing in Oracle 9 and the old costing of Oracle 8 ?Oracle 9与Oracle 8中CPU_COSTING有什么变化? Author's name: Jonathan LewisAuthor's Email: Jonathan@jlcomp.demon.co.ukDate written: 15th Dec 2002 Oracle version(s

ORA FAQ 性能调整系列之——当索引第一列由序列产生,一个逆序索引有什么用?

索引|性能 ORA FAQ 性能调整系列之--The Oracle (tm) Users' Co-Operative FAQWhy would a reverse index be useful when the leading column of the index is generated from a sequence ?当索引第一列由序列产生,一个逆序索引有什么用?--------------------------------------------------------------

ADO.NET连接池FAQ

ado 摘要 连接池允许应用程序从连接池中获得一个连接并使用这个连接,而不需要为每一个连接请求重新建立一个连接.一旦一个新的连接被创建并且放置在连接池中,应用程序就可以重复使用这个连接而不必实施整个数据库连接创建过程. 当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接:当应用程序使用完连接后,该连接被归还给连接池而不是直接释放. 如何实现连接池 确保你每一次的连接使用相同的连接字符串(和连接池相同):只有连接字符串相同时连接池才会工作.如果连接字符串不相同,应用程序

Microsoft .NET框架FAQ续

.net框架 垃圾回收 什么是垃圾回收? 垃圾回收是一种机制,它使计算机能够检测到对象何时不能再被访问.然后它自动释放该对象所使用的内存(同时调用由用户编写的称为"终结程序"的清理例程).有些垃圾回收器(如 .NET 使用的垃圾回收器)压缩内存,从而减小程序的工作集.返回到顶部 非确定性的垃圾回收如何影响代码? 对于大多数程序员而言,拥有垃圾回收器(并使用垃圾回收对象)意味着即使使用复杂的数据结构,也不必担心释放内存或引用计数对象.但是,如果您通常在释放对象内存的同一代码块中释放系统资