The Pixel Developer Asked: 2009-06-04 10:13:09 +0800 CST2009-06-04 10:13:09 +0800 CST 2009-06-04 10:13:09 +0800 CST NGinx 最佳实践 772 您在使用 NGinx 时使用了哪些最佳实践? nginx httpd 15 个回答 Voted Jauder Ho 2009-06-05T00:29:11+08:002009-06-05T00:29:11+08:00 如何组合 HTTP 和 HTTPS 块。 server { listen 80; listen 443 default ssl; # other directives } 这是作为另一个问题的答案发布的。见这里。 Roger 2011-05-04T14:20:30+08:002011-05-04T14:20:30+08:00 到目前为止,我见过的最好的提示来自作者在它的陷阱页面上:https ://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ Slava K 2010-03-22T10:23:30+08:002010-03-22T10:23:30+08:00 通常,使用“if”是一种不好的做法(根据 nginx 的作者)。如果可能,最好使用 try_file 的 error_page 指令而不是“if (-f ...)” 将tip 与maintenence.html 文件结合起来,将tip 与try_files 结合起来,我们得到: 地点 / { try_files /maintenance.html $uri $uri/ @wordpress; } 维护结束时,只需从 $root 中获取 mv maintenance.html。 Jauder Ho 2009-06-12T18:26:42+08:002009-06-12T18:26:42+08:00 配置 nginx 以使用更强的 SSL 密码。默认情况下,启用 SSLv2(如果可能,您应该禁用它)。 ssl_ciphers DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:EDH-RSA-DES-CBC3-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA:RC4-MD5; http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl Phillip B Oldham 2009-06-05T23:53:30+08:002009-06-05T23:53:30+08:00 在切换根以匹配子域时,使用该map指令代替正则表达式通常更有效: server { server_name mysite.tld ~^.+\.mysite\.tld$; map $host $files { default common; mysite.tld common; www.mysite.tld common; admin.mysite.tld admin; system.mysite.tld system; *.mysite.tld users; } root /var/www/mysite/$files; } Phillip B Oldham 2009-06-05T23:57:37+08:002009-06-05T23:57:37+08:00 该empty_gif模块也非常有用,特别是如果您需要监控来自网络服务器的响应(使用 nagios/monit/etc): location /token { empty_gif; } location /favicon.ico { empty_gif; } location /img/1px.gif { empty_gif; } jtimberman 2009-06-04T22:52:52+08:002009-06-04T22:52:52+08:00 我们使用 Chef 设置 Nginx,使用这本食谱,其中包含用于处理 nginx 配置的脚本,类似于 Debian 处理 Apache2 的方式,以及一些具有合理默认值的示例模板。 The Pixel Developer 2009-07-26T12:23:00+08:002009-07-26T12:23:00+08:00 这是返回维护页面的好方法。重写所有请求并返回正确的 http 代码。(503服务不可用) error_page 503 /maintenance.html; location / { if (-f $document_root/maintenance.html) { return 503; } try_files $uri /index.php?$args; } location = /maintenance.html { rewrite ^ /maintenance.html break; } Unknown 2009-06-05T00:11:15+08:002009-06-05T00:11:15+08:00 从 nginx 0.7.12 及更高版本开始,在 server_name 中可以使用 "" 来捕获没有 "Host" 标头的请求。 您可以将以下内容用作未定义虚拟主机的总称。 server { server_name _ ""; } Jauder Ho 2009-06-05T00:32:12+08:002009-06-05T00:32:12+08:00 不久前,我还发布了关于如何使用 nginx 正确处理 gzip 压缩的帖子,因为旧浏览器可能仅使用一揽子 gzip 语句就存在问题。HTH。 http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx
如何组合 HTTP 和 HTTPS 块。
这是作为另一个问题的答案发布的。见这里。
到目前为止,我见过的最好的提示来自作者在它的陷阱页面上:https ://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
通常,使用“if”是一种不好的做法(根据 nginx 的作者)。如果可能,最好使用 try_file 的 error_page 指令而不是“if (-f ...)”
将tip 与maintenence.html 文件结合起来,将tip 与try_files 结合起来,我们得到:
维护结束时,只需从 $root 中获取 mv maintenance.html。
配置 nginx 以使用更强的 SSL 密码。默认情况下,启用 SSLv2(如果可能,您应该禁用它)。
http://tumblelog.jauderho.com/post/121851623/nginx-and-stronger-ssl
在切换根以匹配子域时,使用该
map
指令代替正则表达式通常更有效:该
empty_gif
模块也非常有用,特别是如果您需要监控来自网络服务器的响应(使用 nagios/monit/etc):我们使用 Chef 设置 Nginx,使用这本食谱,其中包含用于处理 nginx 配置的脚本,类似于 Debian 处理 Apache2 的方式,以及一些具有合理默认值的示例模板。
这是返回维护页面的好方法。重写所有请求并返回正确的 http 代码。(503服务不可用)
从 nginx 0.7.12 及更高版本开始,在 server_name 中可以使用 "" 来捕获没有 "Host" 标头的请求。
您可以将以下内容用作未定义虚拟主机的总称。
不久前,我还发布了关于如何使用 nginx 正确处理 gzip 压缩的帖子,因为旧浏览器可能仅使用一揽子 gzip 语句就存在问题。HTH。
http://tumblelog.jauderho.com/post/27655495/gzip-compression-with-nginx