diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eba7243 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +_book diff --git "a/How-To/WebSocket\344\273\243\347\220\206.md" "b/How-To/WebSocket\344\273\243\347\220\206.md" index 0f0515b..0833a5d 100644 --- "a/How-To/WebSocket\344\273\243\347\220\206.md" +++ "b/How-To/WebSocket\344\273\243\347\220\206.md" @@ -1,6 +1,6 @@ # WebSocket 代理 -要将客户端与服务器之间的连接从 HTTP/1.1 转换为 WebSocket,可是使用 HTTP/1.1 中的[协议切换](https://tools.ietf.org/html/rfc2616#section-14.42)机制。 +要将客户端与服务器之间的连接从 HTTP/1.1 转换为 WebSocket,可是使用 HTTP/1.1 中的 [协议切换](https://tools.ietf.org/html/rfc2616#section-14.42) 机制。 然而,有一个微妙的地方:由于 `Upgrade` 是一个[逐跳](https://tools.ietf.org/html/rfc2616#section-13.5.1)(hop-by-hop)头,它不会从客户端传递到代理服务器。当使用转发代理时,客户端可以使用 `CONNECT` 方法来规避此问题。然而,这不适用于反向代理,因为客户端不知道任何代理服务器,这需要在代理服务器上进行特殊处理。 @@ -42,4 +42,4 @@ http { ## 原文档 -[http://nginx.org/en/docs/http/websocket.html](http://nginx.org/en/docs/http/websocket.html) \ No newline at end of file +[http://nginx.org/en/docs/http/websocket.html](http://nginx.org/en/docs/http/websocket.html) diff --git "a/How-To/\344\273\216\346\272\220\347\240\201\346\236\204\345\273\272nginx.md" "b/How-To/\344\273\216\346\272\220\347\240\201\346\236\204\345\273\272nginx.md" index 3b6bc21..be78b5b 100644 --- "a/How-To/\344\273\216\346\272\220\347\240\201\346\236\204\345\273\272nginx.md" +++ "b/How-To/\344\273\216\346\272\220\347\240\201\346\236\204\345\273\272nginx.md" @@ -1,6 +1,6 @@ # 从源码构建 nginx -构建使用 `configure` 命令进行配置。它定义了系统的各个方面,包括了 nginx 进行连接处理使用的方法。最终它创建出一个 `Makefile`。`configure` 命令支持以下参数: +编译时使用 `configure` 命令进行配置。它定义了系统的各个方面,包括了 nginx 进行连接处理使用的方法。最终它会创建出一个 `Makefile`。`configure` 命令支持以下参数: - **--prefix=path** @@ -63,20 +63,20 @@ 设置链接期间使用的其他参数。在 FreeBSD 下使用系统 PCRE 库时,应指定--with-ld-opt="-L /usr/local/lib"`。 -参数使用示例(所有这些参数都要输入在同一行上): +参数使用示例: ```bash -./configure - --sbin-path=/usr/local/nginx/nginx - --conf-path=/usr/local/nginx/nginx.conf - --pid-path=/usr/local/nginx/nginx.pid - --with-http_ssl_module - --with-pcre=../pcre-8.40 +./configure \ + --sbin-path=/usr/local/nginx/nginx \ + --conf-path=/usr/local/nginx/nginx.conf \ + --pid-path=/usr/local/nginx/nginx.pid \ + --with-http_ssl_module \ + --with-pcre=../pcre-8.40 \ --with-zlib=../zlib-1.2.11 ``` -配置完成之后,使用 `make` 编译和安装 nginx。 +配置完成之后,使用 `make` 和 `make install` 编译和安装 nginx。 ## 原文档 -[http://nginx.org/en/docs/configure.html](http://nginx.org/en/docs/configure.html) \ No newline at end of file +[http://nginx.org/en/docs/configure.html](http://nginx.org/en/docs/configure.html) diff --git "a/How-To/\344\275\277\347\224\250DTrace_pid\346\217\220\344\276\233\347\250\213\345\272\217\350\260\203\350\257\225nginx.md" "b/How-To/\344\275\277\347\224\250DTrace_pid\346\217\220\344\276\233\347\250\213\345\272\217\350\260\203\350\257\225nginx.md" index 1ec4868..7be54b3 100644 --- "a/How-To/\344\275\277\347\224\250DTrace_pid\346\217\220\344\276\233\347\250\213\345\272\217\350\260\203\350\257\225nginx.md" +++ "b/How-To/\344\275\277\347\224\250DTrace_pid\346\217\220\344\276\233\347\250\213\345\272\217\350\260\203\350\257\225nginx.md" @@ -46,7 +46,7 @@ typedef ngx_http_request_body_t void; 最后但同样重要的是,需要添加两个成员结构的定义(`ngx_http_headers_in_t`,`ngx_http_headers_out_t`)、回调函数声明和常量定义。 -最后,DTrace 脚本可以从[这里](http://nginx.org/download/trace_process_request.d)下载。 +最后,DTrace 脚本可以从 [这里](http://nginx.org/download/trace_process_request.d) 下载。 以下示例是运行此脚本的输出: @@ -70,4 +70,4 @@ request start sec = 1349162899 ## 原文档 -[http://nginx.org/en/docs/nginx_dtrace_pid_provider.html](http://nginx.org/en/docs/nginx_dtrace_pid_provider.html) \ No newline at end of file +[http://nginx.org/en/docs/nginx_dtrace_pid_provider.html](http://nginx.org/en/docs/nginx_dtrace_pid_provider.html) diff --git "a/How-To/\345\234\250Win32\345\271\263\345\217\260\344\270\212\344\275\277\347\224\250VisualC\346\236\204\345\273\272nginx.md" "b/How-To/\345\234\250Win32\345\271\263\345\217\260\344\270\212\344\275\277\347\224\250VisualC\346\236\204\345\273\272nginx.md" index 679719c..d8cab3a 100644 --- "a/How-To/\345\234\250Win32\345\271\263\345\217\260\344\270\212\344\275\277\347\224\250VisualC\346\236\204\345\273\272nginx.md" +++ "b/How-To/\345\234\250Win32\345\271\263\345\217\260\344\270\212\344\275\277\347\224\250VisualC\346\236\204\345\273\272nginx.md" @@ -12,7 +12,7 @@ ## 构建步骤 -在开始构建之前,确保将 Perl、Mercurial 和 MSYS 的 bin 目录路径添加到 PATH 环境变量中。从 Visual C 目录运行vcvarsall.bat 脚本设置 Visual C 环境。 +在开始构建之前,确保将 Perl、Mercurial 和 MSYS 的 bin 目录路径添加到 PATH 环境变量中。从 Visual C 目录运行 vcvarsall.bat 脚本设置 Visual C 环境。 构建 nginx: @@ -60,4 +60,4 @@ nmake -f objs/Makefile ## 原文档 -[http://nginx.org/en/docs/howto_build_on_win32.html](http://nginx.org/en/docs/howto_build_on_win32.html) \ No newline at end of file +[http://nginx.org/en/docs/howto_build_on_win32.html](http://nginx.org/en/docs/howto_build_on_win32.html) diff --git "a/How-To/\350\275\254\346\215\242\351\207\215\345\206\231\350\247\204\345\210\231.md" "b/How-To/\350\275\254\346\215\242\351\207\215\345\206\231\350\247\204\345\210\231.md" index a084666..ae068e3 100644 --- "a/How-To/\350\275\254\346\215\242\351\207\215\345\206\231\350\247\204\345\210\231.md" +++ "b/How-To/\350\275\254\346\215\242\351\207\215\345\206\231\350\247\204\345\210\231.md" @@ -4,7 +4,7 @@ 使用共享主机的用户以前仅使用 Apache 的 `.htaccess` 文件来配置一切,通常翻译下列规则: -```apache +```apacheconf RewriteCond %{HTTP_HOST} example.org RewriteRule (.*) http://www.example.org$1 ``` @@ -38,14 +38,15 @@ server { } ``` -> 在 0.9.1 之前的版本,重定向可以通过以下方式实现: -> ```nginx -> rewrite ^ http://www.example.org$request_uri?; -> ``` +在 0.9.1 之前的版本,重定向可以通过以下方式实现: + +```nginx +rewrite ^ http://www.example.org$request_uri?; +``` 另一个例子是使用了颠倒逻辑,即 **所有不是 `example.com` 和 `www.example.com` 的**: -```apache +```apacheconf RewriteCond %{HTTP_HOST} !example.com RewriteCond %{HTTP_HOST} !www.example.com RewriteRule (.*) http://www.example.com$1 @@ -67,16 +68,17 @@ server { } ``` -> 在 0.9.1 之前的版本,重定向可以通过以下方式实现: -> ```nginx -> rewrite ^ http://example.com$request_uri?; -> ``` +在 0.9.1 之前的版本,重定向可以通过以下方式实现: + +```nginx +rewrite ^ http://example.com$request_uri?; +``` ## 转换 Mongrel 规则 典型的 Mongrel 规则: -```apache +```apacheconf DocumentRoot /var/www/myapp.com/current/public RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f @@ -113,4 +115,4 @@ location @mongrel { ## 原文档 -[http://nginx.org/en/docs/http/converting_rewrite_rules.html](http://nginx.org/en/docs/http/converting_rewrite_rules.html) \ No newline at end of file +[http://nginx.org/en/docs/http/converting_rewrite_rules.html](http://nginx.org/en/docs/http/converting_rewrite_rules.html) diff --git a/README.md b/README.md index 3cf1d9b..396ccb5 100644 --- a/README.md +++ b/README.md @@ -1,135 +1,14 @@ # Nginx 中文文档 -![Nginx logo](http://nginx.org/nginx.png) +[![GitHub stars](https://img.shields.io/github/stars/DocsHome/nginx-docs.svg?style=social&label=Stars)](https://github.com/DocsHome/nginx-docs) [![GitHub contributors](https://img.shields.io/github/contributors/DocsHome/nginx-docs.svg)](https://github.com/DocsHome/nginx-docs) [![GitHub pull requests](https://img.shields.io/github/issues-pr/DocsHome/nginx-docs.svg)](https://github.com/DocsHome/nginx-docs) [![GitHub last commit](https://img.shields.io/github/last-commit/DocsHome/nginx-docs.svg)](https://github.com/DocsHome/nginx-docs) -Nginx 官方文档中文翻译版,由本人在学习 nginx 时顺带翻译。由于部分章节涉及到 Nginx Plus 或者其他内容,将忽略这部分章节的内容。如果您发现内容存在错误或者不当之处,欢迎指出或者 PR,同时也欢迎您的加入。 +![Nginx logo](https://nginx.org/nginx.png) -## 索引 +Nginx 官方文档中文翻译版,由本人在学习 nginx 时顺带翻译。由于部分章节涉及到 Nginx Plus 或者其他内容,将忽略这部分章节的内容。如果您发现内容存在错误或者不当之处,请提出 PR,期待您的加入。 -### 介绍 -- [安装 nginx](介绍/安装nginx.md) -- [初学者指南](介绍/初学者指南.md) -- 管理指南 -- [控制 nginx](介绍/控制nginx.md) -- [连接处理方式](介绍/连接处理方式.md) -- [设置哈希](介绍/设置哈希.md) -- [调试日志](介绍/调试日志.md) -- [记录日志到 syslog](介绍/记录日志到syslog.md) -- [配置文件度量单位](介绍/配置文件度量单位.md) -- [命令行参数](介绍/命令行参数.md) -- [Windows 下的 nginx](介绍/Windows下的Nginx.md) +在线阅读:[Github](SUMMARY.md) -- [nginx 如何处理请求](介绍/Nginx如何处理请求.md) -- [服务器名称](介绍/服务器名称.md) -- [使用 nginx 作为 HTTP 负载均衡器](介绍/使用Nginx作为HTTP负载均衡器.md) -- [配置 HTTPS 服务器](介绍/配置HTTPS服务器.md) - -- [nginx 如何处理 TCP/UDP 会话](介绍/Nginx如何处理TCP_UDP会话.md) - -- [关于 nginScript](介绍/关于nginScript.md) - -- “开源应用程序架构” 中的 “nginx” 章节 - -### How-To -- [从源码构建 nginx](How-To/从源码构建nginx.md) -- [在 Win32 平台上使用 Visual C 构建 nginx](How-To/在Win32平台上使用VisualC构建nginx.md) -- 设置 Amazon EC2 的 Nginx Plus 环境 -- [使用 DTrace pid 提供程序调试 nginx](How-To/使用DTrace_pid提供程序调试nginx.md) - -- [转换重写规则](How-To/转换重写规则.md) -- [WebSocket 代理](How-To/WebSocket代理.md) - -### 开发 -- [贡献变更](开发/贡献变更.md) -- 开发指南 - -### 模块参考 -- 指令字母索引 -- 变量字母索引 - -- [核心功能](模块参考/核心功能.md) - -- [ngx_http_core_module](模块参考/http/ngx_http_core_module.md)(翻译中) -- [ngx_http_access_module](模块参考/http/ngx_http_access_module.md) -- [ngx_http_addition_module](模块参考/http/ngx_http_addition_module.md) -- [ngx_http_auth_basic_module](模块参考/http/ngx_http_auth_basic_module.md) -- [ngx_http_auth_jwt_module](模块参考/http/ngx_http_auth_jwt_module.md) -- [ngx_http_auth_request_module](模块参考/http/ngx_http_auth_request_module.md) -- [ngx_http_autoindex_module](模块参考/http/ngx_http_autoindex_module.md) -- ngx_http_browser_module -- [ngx_http_charset_module](模块参考/http/ngx_http_charset_module.md) -- ngx_http_dav_module -- ngx_http_empty_gif_module -- ngx_http_f4f_module -- ngx_http_fastcgi_module -- ngx_http_flv_module -- ngx_http_geo_module -- ngx_http_geoip_module -- ngx_http_gunzip_module -- ngx_http_gzip_module -- [ngx_http_gzip_static_module](模块参考/http/ngx_http_gzip_static_module.md) -- ngx_http_headers_module -- ngx_http_hls_module -- ngx_http_image_filter_module -- ngx_http_index_module -- ngx_http_js_module -- ngx_http_limit_conn_module -- ngx_http_limit_req_module -- ngx_http_log_module -- ngx_http_map_module -- ngx_http_memcached_module -- ngx_http_mirror_module -- ngx_http_mp4_module -- ngx_http_perl_module -- ngx_http_proxy_module -- [ngx_http_random_index_module](模块参考/http/ngx_http_random_index_module.md) -- ngx_http_realip_module -- ngx_http_referer_module -- ngx_http_rewrite_module -- ngx_http_scgi_module -- ngx_http_secure_link_module -- ngx_http_session_log_module -- ngx_http_slice_module -- ngx_http_spdy_module -- ngx_http_split_clients_module -- ngx_http_ssi_module -- ngx_http_ssl_module -- ngx_http_status_module -- ngx_http_stub_status_module -- ngx_http_sub_module -- ngx_http_upstream_module -- ngx_http_upstream_conf_module -- ngx_http_upstream_hc_module -- ngx_http_userid_module -- ngx_http_uwsgi_module -- ngx_http_v2_module -- ngx_http_xslt_module - -- ngx_mail_core_module -- ngx_mail_auth_http_module -- ngx_mail_proxy_module -- ngx_mail_ssl_module -- ngx_mail_imap_module -- ngx_mail_pop3_module -- ngx_mail_smtp_module - -- ngx_stream_core_module -- ngx_stream_access_module -- ngx_stream_geo_module -- ngx_stream_geoip_module -- ngx_stream_js_module -- ngx_stream_limit_conn_module -- ngx_stream_log_module -- ngx_stream_map_module -- ngx_stream_proxy_module -- ngx_stream_realip_module -- ngx_stream_return_module -- ngx_stream_split_clients_module -- ngx_stream_ssl_module -- ngx_stream_ssl_preread_module -- ngx_stream_upstream_module -- ngx_stream_upstream_hc_module - -- ngx_google_perftools_module +## 排版规范 +本文档排版遵循 [中文文案排版指北](https://github.com/mzlogin/chinese-copywriting-guidelines)。 ## LICENSE ![知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png) diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..0527514 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,114 @@ +- [介绍](README.md) + - [安装 nginx](介绍/安装nginx.md) + - [初学者指南](介绍/初学者指南.md) +- 管理指南 + - [控制 nginx](介绍/控制nginx.md) + - [连接处理方式](介绍/连接处理方式.md) + - [设置哈希](介绍/设置哈希.md) + - [调试日志](介绍/调试日志.md) + - [记录日志到 syslog](介绍/记录日志到syslog.md) + - [配置文件度量单位](介绍/配置文件度量单位.md) + - [命令行参数](介绍/命令行参数.md) + - [Windows 下的 nginx](介绍/Windows下的Nginx.md) + - [nginx 如何处理请求](介绍/Nginx如何处理请求.md) + - [服务器名称](介绍/服务器名称.md) + - [使用 nginx 作为 HTTP 负载均衡器](介绍/使用Nginx作为HTTP负载均衡器.md) + - [配置 HTTPS 服务器](介绍/配置HTTPS服务器.md) + - [nginx 如何处理 TCP/UDP 会话](介绍/Nginx如何处理TCP_UDP会话.md) + - [关于 nginScript](介绍/关于nginScript.md) + - “开源应用程序架构” 中的 “nginx” 章节 +- 其他 + - [Linux 软件包](其他/linux包.md) +- How-To + - [从源码构建 nginx](How-To/从源码构建nginx.md) + - [在 Win32 平台上使用 Visual C 构建 nginx](How-To/在Win32平台上使用VisualC构建nginx.md) + - 设置 Amazon EC2 的 Nginx Plus 环境 + - [使用 DTrace pid 提供程序调试 nginx](How-To/使用DTrace_pid提供程序调试nginx.md) + - [转换重写规则](How-To/转换重写规则.md) + - [WebSocket 代理](How-To/WebSocket代理.md) +- 开发 + - [贡献变更](开发/贡献变更.md) + - 开发指南 +- 模块参考 + - 指令字母索引 + - 变量字母索引 +- [核心功能](模块参考/核心功能.md) + - [ngx_http_core_module](模块参考/http/ngx_http_core_module.md)(翻译中) + - [ngx_http_access_module](模块参考/http/ngx_http_access_module.md) + - [ngx_http_addition_module](模块参考/http/ngx_http_addition_module.md) + - [ngx_http_auth_basic_module](模块参考/http/ngx_http_auth_basic_module.md) + - [ngx_http_auth_jwt_module](模块参考/http/ngx_http_auth_jwt_module.md) + - [ngx_http_auth_request_module](模块参考/http/ngx_http_auth_request_module.md) + - [ngx_http_autoindex_module](模块参考/http/ngx_http_autoindex_module.md) + - ngx_http_browser_module + - [ngx_http_charset_module](模块参考/http/ngx_http_charset_module.md) + - ngx_http_dav_module + - ngx_http_empty_gif_module + - ngx_http_f4f_module + - ngx_http_fastcgi_module + - ngx_http_flv_module + - ngx_http_geo_module + - ngx_http_geoip_module + - ngx_http_gunzip_module + - ngx_http_gzip_module + - [ngx_http_gzip_static_module](模块参考/http/ngx_http_gzip_static_module.md) + - ngx_http_headers_module + - ngx_http_hls_module + - ngx_http_image_filter_module + - ngx_http_index_module + - ngx_http_js_module + - ngx_http_limit_conn_module + - ngx_http_limit_req_module + - ngx_http_log_module + - ngx_http_map_module + - ngx_http_memcached_module + - ngx_http_mirror_module + - ngx_http_mp4_module + - ngx_http_perl_module + - ngx_http_proxy_module + - [ngx_http_random_index_module](模块参考/http/ngx_http_random_index_module.md) + - ngx_http_realip_module + - ngx_http_referer_module + - ngx_http_rewrite_module + - ngx_http_scgi_module + - ngx_http_secure_link_module + - ngx_http_session_log_module + - ngx_http_slice_module + - ngx_http_spdy_module + - ngx_http_split_clients_module + - ngx_http_ssi_module + - ngx_http_ssl_module + - ngx_http_status_module + - ngx_http_stub_status_module + - ngx_http_sub_module + - ngx_http_upstream_module + - ngx_http_upstream_conf_module + - ngx_http_upstream_hc_module + - ngx_http_userid_module + - ngx_http_uwsgi_module + - ngx_http_v2_module + - ngx_http_xslt_module + - ngx_mail_core_module + - ngx_mail_auth_http_module + - ngx_mail_proxy_module + - ngx_mail_ssl_module + - ngx_mail_imap_module + - ngx_mail_pop3_module + - ngx_mail_smtp_module + - ngx_stream_core_module + - ngx_stream_access_module + - ngx_stream_geo_module + - ngx_stream_geoip_module + - ngx_stream_js_module + - ngx_stream_limit_conn_module + - ngx_stream_log_module + - ngx_stream_map_module + - ngx_stream_proxy_module + - ngx_stream_realip_module + - ngx_stream_return_module + - ngx_stream_split_clients_module + - ngx_stream_ssl_module + - ngx_stream_ssl_preread_module + - ngx_stream_upstream_module + - ngx_stream_upstream_hc_module + - ngx_google_perftools_module diff --git a/book.json b/book.json new file mode 100644 index 0000000..4cd3ce3 --- /dev/null +++ b/book.json @@ -0,0 +1,33 @@ +{ + "author": "DocsHome", + "description": "Nginx 文档中文译版", + "language": "zh-hans", + "links": { + "sidebar": { + "Home": "https://github.com/DocsHome" + } + }, + "plugins": [ + "-sharing", + "-highlight", + "-livereload", + "prism", + "favicon" + ], + "pluginsConfig": { + "prism": { + "css": [ + "prismjs/themes/prism-solarizedlight.css" + ] + }, + "favicon": { + "shortcut": "favicon.ico", + "bookmark": "favicon.ico", + "appleTouch": "favicon.ico", + "appleTouchMore": { + "120x120": "favicon.ico", + "180x180": "favicon.ico" + } + } + } +} diff --git "a/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206TCP_UDP\344\274\232\350\257\235.md" "b/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206TCP_UDP\344\274\232\350\257\235.md" index 3511c75..d747abf 100644 --- "a/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206TCP_UDP\344\274\232\350\257\235.md" +++ "b/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206TCP_UDP\344\274\232\350\257\235.md" @@ -3,14 +3,14 @@ 来自客户端的 TCP/UDP 会话以阶段的形式被逐步处理: |阶 段       |描 述| -|----|----| +|:----|:----| | Post-accept | 接收客户端请求后的第一个阶段。[ngx_stream_realip_module](http://nginx.org/en/docs/stream/ngx_stream_realip_module.html) 模块在此阶段被调用。| | Pre-access | 初步检查访问,[ngx_stream_limit_conn_module](http://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html) 模块在此阶段被调用。 | | Access | 实际处理之前的客户端访问限制,ngx_stream_access_module 模块在此阶段被调用。 | | SSL | TLS/SSL 终止,ngx_stream_ssl_module 模块在此阶段被调用。 | -| Preread | 将数据的初始字节读入[预读缓冲区](http://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_buffer_size)中,以允许如 [ngx_stream_ssl_preread_module](http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html) 之类的模块在处理前分析数据。 | -| Content | 实际处理数据的强制阶段,通常[代理](http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html)到 [upstream](http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html) 服务器,或者返回一个特定的值给客户端 | +| Preread | 将数据的初始字节读入 [预读缓冲区](http://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_buffer_size) 中,以允许如 [ngx_stream_ssl_preread_module](http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html) 之类的模块在处理前分析数据。 | +| Content | 实际处理数据的强制阶段,通常 [代理](http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html) 到 [upstream](http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html) 服务器,或者返回一个特定的值给客户端 | | Log | 此为最后阶段,客户端会话处理结果将被记录, [ngx_stream_log_module module](http://nginx.org/en/docs/stream/ngx_stream_log_module.html) 模块在此阶段被调用。 | ## 原文档 -[http://nginx.org/en/docs/stream/stream_processing.html](http://nginx.org/en/docs/stream/stream_processing.html) \ No newline at end of file +[http://nginx.org/en/docs/stream/stream_processing.html](http://nginx.org/en/docs/stream/stream_processing.html) diff --git "a/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206\350\257\267\346\261\202.md" "b/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206\350\257\267\346\261\202.md" index 999f3b8..1214f9c 100644 --- "a/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206\350\257\267\346\261\202.md" +++ "b/\344\273\213\347\273\215/Nginx\345\246\202\344\275\225\345\244\204\347\220\206\350\257\267\346\261\202.md" @@ -23,7 +23,7 @@ server { } ``` -在此配置中,nginx 仅检验请求的 header 域中的 “Host”,以确定请求应该被路由到哪一个 `server`。如果其值与任何的 `server` 名称不匹配,或者该请求根本不包含此 header 域,nginx 将将请求路由到该端口的默认 `server`。在上面的配置中,默认 `server` 是第一个——这是 nginx 的标准默认行为。它可以明确地设置哪一个 `server` 应该是默认的,在 `listen` 指令中使用 `default_server` 参数: +在此配置中,nginx 仅检验请求的 header 域中的 `Host`,以确定请求应该被路由到哪一个 `server`。如果其值与任何的 `server` 名称不匹配,或者该请求根本不包含此 header 域,nginx 会将请求路由到该端口的默认 `server` 中。在上面的配置中,默认 `server` 是第一个(这是 nginx 的标准默认行为)。你也可以在 `listen` 指令中使用 `default_server` 参数,明确地设置默认的 `server`。 ```nginx server { @@ -32,12 +32,13 @@ server { ... } ``` -> `default_server` 参数自 0.8.21 版本起可用。在早期版本中,应该使用 `default` 参数代替。 + +> `default_server` 参数自 0.8.21 版本起可用。在早期版本中,应该使用 `default` 参数。 请注意,默认 server 是 `listen port` 的属性,而不是 `server_name` 的。之后会有更多关于这方面的内容。 ## 如何使用未定义的 server 名称来阻止处理请求 -如果不允许没有“Host” header 字段的请求,可以定义一个丢弃请求的 server: +如果不允许没有 “Host” header 字段的请求,可以定义一个丢弃请求的 server: ```nginx server { @@ -46,12 +47,13 @@ server { return 444; } ``` -这里的 `server` 名称设置为一个空字符串,匹配不带“Host” header 域的请求,返回一个表示表示关闭连接的 nginx 非标准代码 444。 + +这里的 `server` 名称设置为一个空字符串,会匹配不带 `Host` 的 header 域请求,nginx 会返回一个表示关闭连接的非标准代码 444。 > 自 0.8.48 版本开始,这是 `server` 名称的默认设置,因此可以省略 `server name ""`。在早期版本中,机器的主机名被作为 `server` 的默认名称。 ## 基于名称和 IP 混合的虚拟服务器 -让我们看看更加复杂的配置,其中一些虚拟服务器在不同的地址上监听: +让我们看看更加复杂的配置,其中一些虚拟服务器监听在不同的 IP 地址上监听: ```nginx server { @@ -73,7 +75,7 @@ server { } ``` -此配置中,nginx 首先根据 `server` 块的 `listen` 指令检验请求的 IP 和 端口。之后,根据与 IP 和 端口相匹配的 `server` 块的 `server_name` 项对请求的“Host” header 域进行检验。如果找不到服务器的名称(server_name),请求将由 `default_server` 处理。例如,在 `192.168.1.1:80` 上收到的对 `www.example.com` 的请求将由 `192.168.1.1:80` 端口的 `default_server` (即第一个 server)处理,因为没有 `www.example.com` 没有在此端口上定义。 +此配置中,nginx 首先根据 `server` 块的 `listen` 指令检验请求的 IP 和端口。之后,根据与 IP 和端口相匹配的 `server` 块的 `server_name` 项对请求的“Host” header 域进行检验。如果找不到服务器的名称(server_name),请求将由 `default_server` 处理。例如,在 `192.168.1.1:80` 上收到的对 `www.example.com` 的请求将由 `192.168.1.1:80` 端口的 `default_server` (即第一个 server)处理,因为没有 `www.example.com` 在此端口上定义。 如上所述,默认 `server` 是 `listen port` 的属性,可以为不同的端口定义不同的 `default_server`: @@ -122,6 +124,7 @@ server { } } ``` + nginx 首先忽略排序搜索具有最明确字符串的前缀 `location`。在上面的配置中,唯一有符合的是前缀 `location` 为 `/`,因为它匹配任何请求,它将被用作最后的手段。之后,nginx 按照配置文件中列出的顺序检查由 `location` 的正则表达式。第一个匹配表达式停止搜索,nginx 将使用此 `location`。如果没有正则表达式匹配请求,那么 nginx 将使用前面找到的最明确的前缀 `location`。 请注意,所有类型的 `location` 仅仅是检验请求的 URI 部分,不带参数。这样做是因为查询字符串中的参数可以有多种形式,例如: @@ -130,6 +133,7 @@ nginx 首先忽略排序搜索具有最明确字符串的前缀 `location`。在 /index.php?user=john&page=1 /index.php?page=1&user=john ``` + 此外,任何人都可以在查询字符串中请求任何内容: ``` diff --git "a/\344\273\213\347\273\215/Windows\344\270\213\347\232\204Nginx.md" "b/\344\273\213\347\273\215/Windows\344\270\213\347\232\204Nginx.md" index 7eef302..ec72e58 100644 --- "a/\344\273\213\347\273\215/Windows\344\270\213\347\232\204Nginx.md" +++ "b/\344\273\213\347\273\215/Windows\344\270\213\347\232\204Nginx.md" @@ -4,7 +4,7 @@ Nginx 的 Windows 版本使用了本地的 Win32 API(而不是 Cygwin 模拟 -要安装 nginx的 Windows 版本,请[下载](http://nginx.org/en/download.html)最新的主线发行版(1.13.4),因为 nginx 的 主线分支包含了所有已知的补丁。之后解压文件,到 `nginx-1.13.4` 目录下,然后运行 `nginx`。以下是驱动器 C: 的根目录: +要安装 nginx 的 Windows 版本,请 [下载](http://nginx.org/en/download.html) 最新的主线发行版(1.13.4),因为 nginx 的主线分支包含了所有已知的补丁。之后解压文件到 `nginx-1.13.4` 目录下,然后运行 `nginx`。以下是 `C盘` 的根目录: ```bash cd c:\ @@ -25,13 +25,13 @@ nginx.exe 1332 Console 0 3 112 K ``` 其中有一个是主进程(master),另一个是工作进程(worker)。如果 nginx 未能启动,请在错误日志 `logs\error.log` 中查找原因。如果日志文件尚未创建,可以在 Windows 事件日志中查找原因。如果显示的页面为错误页面,而不是预期结果,也可以在 `logs\error.log` 中查找原因。 -nginx/Windows 使用运行目录作为配置文件中的相对路径前缀。在上面的例子中,前缀是 `C:\nginx-1.13.4\`。在配置文件中的路径必须使类 Unix 风格的正斜杠: +Nginx 的 Windows 版本使用运行目录作为配置文件中的相对路径前缀。在上面的例子中,前缀是 `C:\nginx-1.13.4\`。在配置文件中的路径必须使类 Unix 风格的正斜杠: ```nginx access_log logs/site.log; root C:/web/html; ``` -nginx/Windows 作为标准的控制台应用程序(而不是服务)运行,可以使用以下命令进行管理: +Nginx 的 Windows 版本作为标准的控制台应用程序(而不是服务)运行,可以使用以下命令进行管理: - `nginx -s stop` 快速退出 - `nginx -s quit` 正常退出 diff --git "a/\344\273\213\347\273\215/\344\275\277\347\224\250Nginx\344\275\234\344\270\272HTTP\350\264\237\350\275\275\345\235\207\350\241\241\345\231\250.md" "b/\344\273\213\347\273\215/\344\275\277\347\224\250Nginx\344\275\234\344\270\272HTTP\350\264\237\350\275\275\345\235\207\350\241\241\345\231\250.md" index 3a01468..5ba8960 100644 --- "a/\344\273\213\347\273\215/\344\275\277\347\224\250Nginx\344\275\234\344\270\272HTTP\350\264\237\350\275\275\345\235\207\350\241\241\345\231\250.md" +++ "b/\344\273\213\347\273\215/\344\275\277\347\224\250Nginx\344\275\234\344\270\272HTTP\350\264\237\350\275\275\345\235\207\350\241\241\345\231\250.md" @@ -31,18 +31,18 @@ http { } } ``` -在上述示例中,在 srv1-srv3 上运行相同的应用的三个实例。当负载均衡方法没有被特别配置时,默认采用轮询(round-robin)。所有请求都被[代理](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass)到服务器组 myapp1,nginx 应用 HTTP 负载均衡来分发请求。 +在上述示例中,在 srv1-srv3 上运行相同的应用的三个实例。当负载均衡方法没有被特别配置时,默认采用轮询(round-robin)。所有请求都被 [代理](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass) 到服务器组 myapp1,nginx 应用 HTTP 负载均衡来分发请求。 -nginx 中的反向代理实现包括HTTP、HTTPS、FastCGI、uwsgi、SCGI 和 memcached。 +nginx 中的反向代理实现包括 HTTP、HTTPS、FastCGI、uwsgi、SCGI 和 memcached。 -要配置 HTTPS 而不是 HTTP 负载均衡,只需要使用 “HTTPS” 作为协议。 +要配置 HTTPS 而不是 HTTP 负载均衡,只需要使用 HTTPS 协议。 在为 FastCGI、uwsgi、SCGI 或 memcached 设置负载均衡时,分别使用 [fastcgi_pass](http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_pass)、[uwsgi_pass](http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_pass)、[scgi_pass](http://nginx.org/en/docs/http/ngx_http_scgi_module.html#scgi_pass) 和 [memcached_pass](http://nginx.org/en/docs/http/ngx_http_memcached_module.html#memcached_pass) 指令。 ## 最少连接负载均衡 另一个负载均衡的规则是最少连接。在一些请求需要更长的时间才能完成的情况下,最少连接可以更公正地控制应用程序实例的负载。 -使用最少连接的负载均衡,nginx 将尽量不给过于繁忙的应用服务器负载过多的请求,而是将心得请求分发到不太忙的服务器。 +使用最少连接的负载均衡,nginx 将尽量不给过于繁忙的应用服务器负载过多的请求,而是将新的请求分发到不太忙的服务器。 当使用 [least_conn](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn) 指令作为服务组配置的一部分时,将激活 nginx 中的最少连接负载均衡: @@ -58,11 +58,11 @@ upstream myapp1 { ## 会话持久化 请注意,使用轮询或者最少连接的负载均衡,每个后续客户端的请求都可能被分配到不同的服务器。不能保证同一个客户端始终指向同一个服务器。 -如果需要将客户端绑定到特定的应用服务器,换而言之,使客户端会话“粘滞”或者“永久”,始终尝试选择特定的服务器,IP 哈希负载均衡机制可以做到这点。 +如果需要将客户端绑定到特定的应用服务器,换而言之,使客户端会话「粘滞」或者「永久」,始终尝试选择特定的服务器,IP 哈希负载均衡机制可以做到这点。 使用 IP 哈希,客户端的 IP 地址用作为哈希键,以确定应用为客户端请求选择服务器组中的哪个服务器。此方法确保了来自同一个客户端的请求始终被定向到同一台服务器,除非该服务器不可用。 -要配置 IP 哈希负载均衡,只需要将 [ip_hash](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash) 指令添加到服务器(upstream)组配置即可: +要配置 IP 哈希负载均衡,只需要将 [ip_hash](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash) 指令添加到服务器 upstream 组配置中即可: ```nginx upstream myapp1 { @@ -101,7 +101,7 @@ nginx 中的反向代理实现包括了带内(或者被动)服务器健康 ## 进一步阅读 此外,还有更多的指令和参数可以控制 nginx 中的服务器负载均衡,例如,[proxy_next_upstream](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream)、[backup](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server)、[down](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server) 和 [keepalive](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive)。有关更多的信息,请查看我们的参考文档。 -最后但同样重要,[应用程序负载均衡](https://www.nginx.com/products/application-load-balancing/?_ga=2.104451654.798520331.1503766923-1890203964.1497190280)、[应用程序健康检查](https://www.nginx.com/products/application-health-checks/?_ga=2.104451654.798520331.1503766923-1890203964.1497190280)、[活动监控](https://www.nginx.com/products/live-activity-monitoring/?_ga=2.104451654.798520331.1503766923-1890203964.1497190280)和服务组[动态重新配置](https://www.nginx.com/products/on-the-fly-reconfiguration/?_ga=2.96194266.798520331.1503766923-1890203964.1497190280)作为我们 NGINX Plus 付费订阅的一部分。 +最后但同样重要,[应用程序负载均衡](https://www.nginx.com/products/application-load-balancing/?_ga=2.104451654.798520331.1503766923-1890203964.1497190280)、[应用程序健康检查](https://www.nginx.com/products/application-health-checks/?_ga=2.104451654.798520331.1503766923-1890203964.1497190280)、[活动监控](https://www.nginx.com/products/live-activity-monitoring/?_ga=2.104451654.798520331.1503766923-1890203964.1497190280) 和服务组 [动态重新配置](https://www.nginx.com/products/on-the-fly-reconfiguration/?_ga=2.96194266.798520331.1503766923-1890203964.1497190280) 作为我们 NGINX Plus 付费订阅的一部分。 以下文章详细介绍了 NGINX Plus 负载均衡: - [NGINX 负载均衡与 NGINX Plus](https://www.nginx.com/blog/load-balancing-with-nginx-plus/?_ga=2.96194266.798520331.1503766923-1890203964.1497190280) diff --git "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" index a5330ef..854bcac 100644 --- "a/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" +++ "b/\344\273\213\347\273\215/\345\210\235\345\255\246\350\200\205\346\214\207\345\215\227.md" @@ -1,14 +1,14 @@ # 初学者指南 -本指南旨在介绍nginx基本内容和一些在Nginx上可以完成的简单任务。这里假设您已经安装了nginx,否则请参阅安装nginx页面。 本指南介绍如何启动、停止nginx和重新加载配置,解释配置文件的结构,并介绍如何设置nginx以提供静态内容服务,如何配置nginx作为代理服务器,以及如何将其连接到一个FastCGI应用程序。 +本指南旨在介绍 Nginx 基本内容和一些在 Nginx 上可以完成的简单任务。这里假设您已经安装了 nginx,否则请参阅 [安装 nginx ](安装nginx.md) 页面。 本指南介绍如何启动、停止 nginx 和重新加载配置,解释配置文件的结构,并介绍如何设置 nginx 以提供静态内容服务,如何配置 nginx 作为代理服务器,以及如何将其连接到一个 FastCGI 应用程序。 -nginx有一个主进程(Master)和几个工作进程(Worker)。主进程的主要目的是读取和评估配置,并维护工作进程。工作进程对请求进行处理。nginx采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用CPU内核的数量(请参阅worker_processes)。 +nginx 有一个主进程(Master)和几个工作进程(Worker)。主进程的主要目的是读取和评估配置,并维护工作进程。工作进程对请求进行处理。nginx 采用了基于事件模型和依赖于操作系统的机制来有效地在工作进程之间分配请求。工作进程的数量可在配置文件中定义,并且可以针对给定的配置进行修改,或者自动调整到可用 CPU 内核的数量(请参阅 worker_processes)。 -配置文件决定了nginx及其模块的工作方式。默认情况下,配置文件名为`nginx.conf`,并放在目录`/usr/local/nginx/conf`,`/etc/nginx`或`/usr/local/etc/nginx`中。 +配置文件决定了 nginx 及其模块的工作方式。默认情况下,配置文件名为 `nginx.conf`,并放在目录 `/usr/local/nginx/conf`,`/etc/nginx` 或 `/usr/local/etc/nginx` 中。 ## 启动、停止和重新加载配置 -要启动nginx,需要运行可执行文件。nginx启动之后,可以通过调用可执行文件附带-s参数来控制它。 使用以下语法: +要启动 nginx,需要运行可执行文件。nginx 启动之后,可以通过调用可执行文件附带 `-s 参数` 来控制它。 使用以下语法: ```bash nginx -s 信号 @@ -21,7 +21,7 @@ nginx -s 信号 - reload - 重新加载配置文件 - reopen - 重新打开日志文件 -例如,要等待工作进程处理完当前的请求才停止nginx进程,可以执行以下命令: +例如,要等待工作进程处理完当前的请求才停止 nginx 进程,可以执行以下命令: ```bash nginx -s quit @@ -29,7 +29,7 @@ nginx -s quit > 这个命令的执行用户应该是与启动nginx用户是一致的 -在将重新加载配置的命令发送到nginx或重新启动之前,配置文件所做的内容更改将不会生效。要重新加载配置,请执行: +在将重新加载配置的命令发送到 nginx 或重新启动之前,配置文件所做的内容更改将不会生效。要重新加载配置,请执行: ```bash nginx -s reload @@ -37,31 +37,31 @@ nginx -s reload 一旦主进程(Master)收到要重新加载配置(reload)的信号,它将检查新配置文件的语法有效性,并尝试应用其中提供的配置。如果成功,主进程将启动新的工作进程(Worker),并向旧工作进程发送消息,请求它们关闭。否则,主进程回滚更改,并继续使用旧配置。旧工作进程接收到关闭命令后,停止接受新的请求连接,并继续维护当前请求,直到这些请求都被处理完成之后,旧工作进程将退出。 -可以借助Unix工具(如kill工具)将信号发送到nginx进程,信号直接发送到指定进程ID的进程。默认情况下,nginx主进程的进程ID是写入在`/usr/local/nginx/ logs`或`/var/run`中的nginx.pid文件中。例如,如果主进程ID为1628,则发送QUIT信号让nginx正常平滑关闭,可执行: +可以借助 Unix 工具(如 kill 工具)将信号发送到 nginx 进程,信号直接发送到指定进程 ID 的进程。默认情况下,nginx 主进程的进程 ID 是写入在 `/usr/local/nginx/logs` 或 `/var/run` 中的 nginx.pid 文件中。例如,如果主进程 ID 为 1628,则发送 QUIT 信号让 nginx 正常平滑关闭,可执行: ```bash kill -s QUIT 1628 ``` -获取所有正在运行的nginx进程列表,可以使用`ps`命令,如下: +获取所有正在运行的 nginx 进程列表,可以使用 `ps` 命令,如下: ```bash ps -ax | grep nginx ``` -有关向nginx发送信号的更多信息,请参阅控制nginx。 +有关向 nginx 发送信号的更多信息,请参阅 [控制 nginx](控制nginx.md)。 ## 配置文件结构 -nginx是由配置文件中指定的指令控制模块组成。指令可分为简单指令和块指令。一个简单的指令是由空格分隔的名称和参数组成,并以分号(;)结尾。块指令具有与简单指令相同的结构,但不是以分号结尾,而是以大括号({和})包围的一组附加指令结尾。如果块指令的大括号内部可以有其它指令,则称这个块指令为上下文(例如:`events`,`http`,`server`和`location`)。 +nginx 是由配置文件中指定的指令控制模块组成。指令可分为简单指令和块指令。一个简单的指令是由空格分隔的名称和参数组成,并以分号 `;` 结尾。块指令具有与简单指令相同的结构,但不是以分号结尾,而是以大括号`{}`包围的一组附加指令结尾。如果块指令的大括号内部可以有其它指令,则称这个块指令为上下文(例如:`events`,`http`,`server` 和 `location`)。 -配置文件中被放置在任何上下文之外的指令都被认为是主上下文。`events`和`http`指令在主上下文中,`server` 在 `http` 中,`location`又在`server`中。 +配置文件中被放置在任何上下文之外的指令都被认为是主上下文。`events` 和 `http` 指令在主上下文中,`server` 在 `http` 中,`location` 又在 `server` 中。 -#号之后的行的内容被视为注释。 +井号 `#` 之后的行的内容被视为注释。 ## 提供静态内容服务 -Web服务器的一个重要任务是提供文件(比如图片或者静态HTML页面)服务。您将实现一个示例,根据请求,将提供来自不同的本地目录的文件:`/data/www`(可能包含HTML文件)和`/data/images `(包含图片)。这需要编辑配置文件,在`http`中配置一个包含两个`location`块的`server`块指令。 +Web 服务器的一个重要任务是提供文件(比如图片或者静态 HTML 页面)服务。您将实现一个示例,根据请求,将提供来自不同的本地目录的文件: `/data/www`(可能包含 HTML 文件)和 `/data/images`(包含图片)。这需要编辑配置文件,在 `http` 中配置一个包含两个 `location` 块的 `server` 块指令。 ```nginx http { @@ -70,9 +70,9 @@ http { } ``` -通常,配置文件可以包含几个由监听端口和服务器域名区分的`server`块指令。一旦nginx决定由哪个`server`来处理请求,它会根据`server`块中定义的`location`指令的参数来检验请求头中指定的URI。 +通常,配置文件可以包含几个由监听端口和服务器域名区分的 `server` 块指令。一旦 nginx 决定由哪个 `server` 来处理请求,它会根据 `server` 块中定义的 `location` 指令的参数来检验请求头中指定的URI。 -添加如下`location`块指令到`server`块指令中: +添加如下 `location` 块指令到 `server` 块指令中: ```nginx location / { @@ -80,9 +80,9 @@ location / { } ``` -该`location`块指令指定“/”前缀与请求中的URI相比较。对于匹配的请求,URI将被添加到根指令中指定的路径,即`/data/ www`,以形成本地文件系统上所请求文件的路径。如果有几个匹配上的`location`块指令,nginx将选择具有最长前缀的`location`块。上面的位置块提供最短的前缀,长度为1,因此只有当所有其它`location`块不能匹配时,才会使用该块。 +该 `location` 块指令指定 `/` 前缀与请求中的 URI 相比较。对于匹配的请求,URI 将被添加到根指令中指定的路径,即 `/data/ www`,以形成本地文件系统上所请求文件的路径。如果有几个匹配上的 `location` 块指令,nginx 将选择具有最长前缀的 `location` 块。上面的位置块提供最短的前缀,长度为 1,因此只有当所有其它 `location` 块不能匹配时,才会使用该块。 -接下来,添加第二个`location`指令快: +接下来,添加第二个 `location` 指令快: ```nginx location /images/ { @@ -90,9 +90,9 @@ location /images/ { } ``` -以`/images/`为开头的请求将会被匹配上(虽然`location /`也能匹配上此请求,但是它的前缀更短) +以 `/images/` 为开头的请求将会被匹配上(虽然 `location /` 也能匹配上此请求,但是它的前缀更短) -最后,`server`块指令应如下所示: +最后,`server` 块指令应如下所示: ```nginx server { @@ -106,23 +106,23 @@ server { } ``` -这已经是一个监听标准80端口并且可以在本地机器上通过`http://localhost/`地址来访问的有效配置。响应以`/images/`开头的URI请求,服务器将从`/data/images`目录发送文件。例如,响应`http://localhost/images/example.png`请求,nginx将发送`/data/images/example.png`文件。如果此文件不存在,nginx将发送一个404错误响应。不以`/ images/`开头的URI的请求将映射到`/data/www`目录。例如,响应`http://localhost/some/example.html`请求,nginx将发送`/data/www/some/example.html`文件。 +这已经是一个监听标准 80 端口并且可以在本地机器上通过 `http://localhost/` 地址来访问的有效配置。响应以 `/images/` 开头的URI请求,服务器将从 `/data/images` 目录发送文件。例如,响应`http://localhost/images/example.png` 请求,nginx 将发送 `/data/images/example.png` 文件。如果此文件不存在,nginx 将发送一个404错误响应。不以 `/ images/` 开头的 URI 的请求将映射到 `/data/www` 目录。例如,响应 `http://localhost/some/example.html` 请求,nginx 将发送 `/data/www/some/example.html` 文件。 -要让新配置立刻生效,如果nginx尚未启动可以启动它,否则通过执行以下命令将重新加载配置信号发送到nginx的主进程: +要让新配置立刻生效,如果 nginx 尚未启动可以启动它,否则通过执行以下命令将重新加载配置信号发送到 nginx 的主进程: ```bash nginx -s reload ``` -> 如果运行的效果没有在预期之中,您可以尝试从`/usr/local/nginx/logs`或`/var/log/ nginx`中的access.log和error.log日志文件中查找原因。 +> 如果运行的效果没有在预期之中,您可以尝试从 `/usr/local/nginx/logs` 或 `/var/log/ nginx` 中的access.log和error.log日志文件中查找原因。 ## 设置一个简单的代理服务器 -nginx的一个常见用途是作为一个代理服务器,作用是接收请求并转发给被代理的服务器,从中取得响应,并将其发送回客户端。 +nginx 的一个常见用途是作为一个代理服务器,作用是接收请求并转发给被代理的服务器,从中取得响应,并将其发送回客户端。 -我们将配置一个基本的代理服务器,它为图片请求提供的文件来自本地目录,并将所有其它请求发送给代理的服务器。在此示例中,两个服务器在单个nginx实例上定义。 +我们将配置一个基本的代理服务器,它为图片请求提供的文件来自本地目录,并将所有其它请求发送给代理的服务器。在此示例中,两个服务器在单个 nginx 实例上定义。 -首先,通过向nginx的配置文件添加一个`server`块来定义代理服务器,其中包含以下内容: +首先,通过向 nginx 的配置文件添加一个 `server` 块来定义代理服务器,其中包含以下内容: ```nginx server { @@ -134,9 +134,9 @@ server { } ``` -这是一个监听8080端口的简单服务器(以前,由于使用了标准80端口,所以没有指定listen指令),并将所有请求映射到本地文件系统上的`/data/up1`目录。创建此目录并将index.html文件放入其中。请注意,`root`指令位于`server`上下文中。当选择用于处理请求的`location`块不包含`root`指令时,将使用此`root`指令。 +这是一个监听 8080 端口的简单服务器(以前,由于使用了标准 80 端口,所以没有指定 listen 指令),并将所有请求映射到本地文件系统上的 `/data/up1` 目录。创建此目录并将 `index.html` 文件放入其中。请注意,`root` 指令位于 `server` 上下文中。当选择用于处理请求的 `location` 块不包含 `root` 指令时,将使用此 `root` 指令。 -接下来,在上一节中的服务器配置基础上进行修改,使其成为代理服务器配置。在第一个`location`块中,使用参数指定的代理服务器的协议,域名和端口(在本例中为`http://localhost:8080`)放置在proxy_pass指令处: +接下来,在上一节中的服务器配置基础上进行修改,使其成为代理服务器配置。在第一个 `location` 块中,使用参数指定的代理服务器的协议,域名和端口(在本例中为 `http://localhost:8080`)放置在 proxy_pass 指令处: ```nginx server { @@ -150,7 +150,7 @@ server { } ``` -我们将修改使用了`/images/`前缀将请求映射到`/data/images`目录下的文件的第二个`location`块,使其与附带常见的图片文件扩展名的请求相匹配。修改后的`location`块如下所示: +我们将修改使用了 `/images/` 前缀将请求映射到 `/data/images` 目录下的文件的第二个 `location` 块,使其与附带常见的图片文件扩展名的请求相匹配。修改后的 `location` 块如下所示: ```nginx location ~ \.(gif|jpg|png)$ { @@ -158,9 +158,9 @@ location ~ \.(gif|jpg|png)$ { } ``` -该参数是一个正则表达式,匹配所有以.gif,.jpg或.png结尾的URI。正则表达式之前应该是〜。相应的请求将映射到`/data/images`目录。 +该参数是一个正则表达式,匹配所有以`.gif`,`.jpg` 或 `.png` 结尾的 URI。正则表达式之前应该是 `~`。相应的请求将映射到 `/data/images` 目录。 -当nginx选择一个`location`块来提供请求时,它首先检查指定前缀的`location`指令,记住具有最长前缀的`location`,然后检查正则表达式。如果与正则表达式匹配,nginx会选择此`location`,否则选择更早之前记住的那一个。 +当 nginx 选择一个 `location` 块来提供请求时,它首先检查指定前缀的 `location` 指令,记住具有最长前缀的 `location`,然后检查正则表达式。如果与正则表达式匹配,nginx 会选择此 `location`,否则选择更早之前记住的那一个。 代理服务器的最终配置如下: @@ -176,17 +176,17 @@ server { } ``` -此`server`将过滤以.gif,.jpg或.png结尾的请求,并将它们映射到`/data/images`目录(通过向root指令的参数添加URI),并将所有其它请求传递到上面配置的代理服务器。 +此 `server` 将过滤以 `.gif`,`.jpg` 或 `.png` 结尾的请求,并将它们映射到 `/data/images` 目录(通过向 root 指令的参数添加 URI),并将所有其它请求传递到上面配置的代理服务器。 -要使新配置立即生效,请将重新加载配置文件信号(reload)发送到nginx,如前几节所述。 +要使新配置立即生效,请将重新加载配置文件信号(reload)发送到 nginx,如前几节所述。 还有更多的指令可用于进一步配置代理连接。 -## 设置FastCGI代理 +## 设置 FastCGI 代理 -nginx可被用于将请求路由到运行了使用各种框架和PHP等编程语言构建的应用程序的FastCGI服务器。 +nginx 可被用于将请求路由到运行了使用各种框架和 PHP 等编程语言构建的应用程序的 FastCGI 服务器。 -与FastCGI服务器协同工作的最基本的nginx配置是使用`fastcgi_pass`指令而不是`proxy_pass`指令,以及`fastcgi_param`指令来设置传递给FastCGI服务器的参数。假设FastCGI服务器可以在localhost:9000上访问。以上一节的代理配置为基础,用`fastcgi_pass`指令替换`proxy_pass`指令,并将参数更改为localhost:9000。在PHP中,`SCRIPT_FILENAME`参数用于确定脚本名称,`QUERY_STRING`参数用于传递请求参数。最终的配置将是: +与 FastCGI 服务器协同工作的最基本的 nginx 配置是使用 `fastcgi_pass` 指令而不是 `proxy_pass` 指令,以及 `fastcgi_param` 指令来设置传递给 FastCGI 服务器的参数。假设 FastCGI 服务器可以在 localhost:9000 上访问。以上一节的代理配置为基础,用 `fastcgi_pass` 指令替换 `proxy_pass` 指令,并将参数更改为 `localhost:9000`。在 PHP 中,`SCRIPT_FILENAME` 参数用于确定脚本名称,`QUERY_STRING` 参数用于传递请求参数。最终的配置将是: ```nginx server { @@ -202,7 +202,7 @@ server { } ``` -这里设置一个`server`,将除了静态图片请求之外的所有请求路由到通过FastCGI协议在localhost:9000上运行的代理服务器。 +这里设置一个 `server`,将除了静态图片请求之外的所有请求路由到通过 FastCGI 协议在 `localhost:9000` 上运行的代理服务器。 ## 原文档 diff --git "a/\344\273\213\347\273\215/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260.md" "b/\344\273\213\347\273\215/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260.md" index 6530e64..fbd0819 100644 --- "a/\344\273\213\347\273\215/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260.md" +++ "b/\344\273\213\347\273\215/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260.md" @@ -3,25 +3,25 @@ nginx支持以下命令行参数: - `-?` 或者 `-h` —— 打印命令行参数帮助信息 -- `-c file` —— 使用指定的配置文件file来替代掉默认的配置文件 -- `-g directive` —— 设置[全局配置指令](http://nginx.org/en/docs/ngx_core_module.html),例如: +- `-c file` —— 使用指定的配置文件来替代默认的配置文件 +- `-g directive` —— 设置 [全局配置指令](http://nginx.org/en/docs/ngx_core_module.html),例如: -``` +```bash nginx -g "pid /var/run/nginx.pid; worker_processes `sysctl -n hw.ncpu`;" ``` -- `-p prefix` —— 设置nginx路径前缀,比如一个存放着服务器文件的目录(默认是`/usr/local/nginx`)。 +- `-p prefix` —— 设置 nginx 路径前缀,比如一个存放着服务器文件的目录(默认是 `/usr/local/nginx` )。 - `-q` —— 在配置测试期间禁止非错误信息。 -- `-s signal` —— 向主进程(Master)发送信号,信号参数可以是以下: +- `-s signal` —— 向 Master 进程发送信号,信号参数可以是以下: - `stop` —— 快速关闭。 - `quit` —— 正常关闭。 - - `reload` —— 重新加载配置,使用新配置后启动新的工作进程(Worker),正常退出就的工作进程。 + - `reload` —— 重新加载配置,使用新配置后启动新的 Worker 进程并正常退出旧的工作进程。 - `reopen` —— 重新打开日志文件。 -- `-t` —— 测试配置文件:nginx检查配置文件的语法正确性,之后尝试打开配置中引用到的文件。 -- `-T` —— 与`-t`一样,但另外将配置文件转储到标准输出(1.9.2)。 -- `-v` —— 打印nginx版本。 -- `-V` —— 打印nginx版本,编译器版本和配置参数。 +- `-t` —— 测试配置文件:nginx 检查配置文件的语法正确性,之后尝试打开配置中引用到的文件。 +- `-T` —— 与 `-t` 一样,但另外将配置文件转储到标准输出(1.9.2)。 +- `-v` —— 打印 nginx 版本。 +- `-V` —— 打印 nginx 版本,编译器版本和配置参数。 ## 原文档 -[http://nginx.org/en/docs/switches.html](http://nginx.org/en/docs/switches.html) \ No newline at end of file +[http://nginx.org/en/docs/switches.html](http://nginx.org/en/docs/switches.html) diff --git "a/\344\273\213\347\273\215/\345\256\211\350\243\205nginx.md" "b/\344\273\213\347\273\215/\345\256\211\350\243\205nginx.md" index f9c71e2..4a3f002 100644 --- "a/\344\273\213\347\273\215/\345\256\211\350\243\205nginx.md" +++ "b/\344\273\213\347\273\215/\345\256\211\350\243\205nginx.md" @@ -4,16 +4,16 @@ nginx 可以以不同的方式安装,安装方式取决于当前的操作系 ## 在 Linux 上安装 -对于Linux,可以使用 nginx.org 的 nginx [软件包](../其他/linux包.md)。 +对于 Linux,可以使用 nginx.org 的 nginx [软件包](../其他/linux包.md)。 ## 在 FreeBSD 上安装 -在 FreeBSD 上,可以从[软件包](http://www.freebsd.org/doc/handbook/pkgng-intro.html)或通过 [ports](http://www.freebsd.org/doc/handbook/ports-using.html) 系统安装 nginx。ports 系统提供更大的灵活性,提供了各种选项可供选择。port 将使用指定的选项编译 nginx 并进行安装。 +在 FreeBSD 上,可以从 [软件包](http://www.freebsd.org/doc/handbook/pkgng-intro.html) 或通过 [ports](http://www.freebsd.org/doc/handbook/ports-using.html) 系统安装 nginx。ports 系统提供更大的灵活性,提供了各种选项可供选择。port 将使用指定的选项编译 nginx 并进行安装。 ## 从源码安装 -如果需要某些特殊功能软件包和 ports 无法提供,那么可以从源码中编译 nginx。虽然此方式更加灵活,但对于初学者来说可能会很复杂。有关更多信息,请参阅[从源码构建 nginx](../How-To/从源码构建nginx.md)。 +如果需要某些特殊功能软件包和 ports 无法提供,那么可以从源码中编译 nginx。虽然此方式更加灵活,但对于初学者来说可能会很复杂。更多信息请参阅 [从源码构建 nginx](../How-To/从源码构建nginx.md)。 ## 原文档 -[http://nginx.org/en/docs/install.html](http://nginx.org/en/docs/install.html) \ No newline at end of file +[http://nginx.org/en/docs/install.html](http://nginx.org/en/docs/install.html) diff --git "a/\344\273\213\347\273\215/\346\216\247\345\210\266nginx.md" "b/\344\273\213\347\273\215/\346\216\247\345\210\266nginx.md" index 96fe7da..1ad7ac7 100644 --- "a/\344\273\213\347\273\215/\346\216\247\345\210\266nginx.md" +++ "b/\344\273\213\347\273\215/\346\216\247\345\210\266nginx.md" @@ -1,20 +1,20 @@ # 控制 nginx -nginx 可以用信号控制。默认情况下,主进程(Master)的 pid 是写在 `/use/local/nginx/logs/nginx.pid` 文件中。这个文件的位置可以在配置时或者在 nginx.conf 文件中指定 `pid` 指令更改。Master 进程支持以下信号: +可以用信号控制 nginx。默认情况下,主进程(Master)的 pid 写在 `/use/local/nginx/logs/nginx.pid` 文件中。这个文件的位置可以在配置时更改或者在 nginx.conf 文件中使用 `pid` 指令更改。Master 进程支持以下信号: 信号 | 作用 ----|--- +:---|:--- TERM, INT | 快速关闭 QUIT| 正常退出 -HUP | 当改变配置文件时,将有一段过渡时间段(仅 FreeBSD 和 Linux),
新启动的Worker 进程将应用新的配置,旧的 Worker 进程将被平滑退出 +HUP | 当改变配置文件时,将有一段过渡时间段(仅 FreeBSD 和 Linux),新启动的 Worker 进程将应用新的配置,旧的 Worker 进程将被平滑退出 USR1| 重新打开日志文件 USR2| 升级可执行文件 WINCH| 正常关闭 Worker 进程 -Worker进程也是可以用信号控制的,尽管这不是必须的。支持的信号如下: +Worker 进程也是可以用信号控制的,尽管这不是必须的。支持以下信号: 信号 | 作用 ----|--- +:---|:--- TERM, INT | 快速关闭 QUIT | 正常关闭 USR1 | 重新打开日志文件 @@ -22,7 +22,7 @@ WINCH | 调试异常终止(需要开启 `debug_points`) ## 配置变更 -为了让 nginx 重新读取配置文件,应将 `HUP` 信号发送给 Master 进程。Master 进程首先会检查配置文件的语法有效性,之后尝试应用新的配置,即打开日志文件和新的监听套接字。如果失败了,它会回滚更改并继续使用旧的配置。如果成功,它将启动新的 Worker 进程并向旧的 Worker 进程发送消息请求它们正常关闭。旧的 Worker 进程关闭监听套接字并继续为旧的客户端服务,当所有就的客户端被处理完成,旧的 Worker 进程将被关闭。 +为了让 nginx 重新读取配置文件,应将 `HUP` 信号发送给 Master 进程。Master 进程首先会检查配置文件的语法有效性,之后尝试应用新的配置,即打开日志文件和新的 socket。如果失败了,它会回滚更改并继续使用旧的配置。如果成功,它将启动新的 Worker 进程并向旧的 Worker 进程发送消息请求它们正常关闭。旧的 Worker 进程关闭监听 socket 并继续为旧的客户端服务,当所有就的客户端被处理完成,旧的 Worker 进程将被关闭。 我们来举例说明一下。 想象一下,nginx 是在 FreeBSD 4.x 命令行上运行的 @@ -40,7 +40,7 @@ ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)' 33129 33126 nobody 0.0 1364 kqread nginx: worker process (nginx) ``` -如果把`HUP`信号发送到master进程,输出的结果将会是: +如果把 `HUP` 信号发送到 master 进程,输出的结果将会是: ```bash PID PPID USER %CPU VSZ WCHAN COMMAND @@ -63,7 +63,7 @@ PID PPID USER %CPU VSZ WCHAN COMMAND ## 日志轮转 -为了做日志轮转,首先需要重命名。之后应该发送 `USR1` 信号给 master 进程。Master 进程将会重新打开当前所有的日志文件,并将其分配给一个正在运行未经授权的用户为所有者的worker 进程。成功重新打开之后,Master 进程将会关闭所有打开的文件并且发送消息给worker 进程要求它们重新打开文件。Worker 进程重新打开新文件和立即关闭旧文件。因此,旧的文件几乎可以立即用于后期处理,例如压缩。 +为了做日志轮转,首先需要重命名。之后应该发送 `USR1` 信号给 master 进程。Master 进程将会重新打开当前所有的日志文件,并将其分配给一个正在运行未经授权的用户为所有者的 worker 进程。成功重新打开之后 Master 进程将会关闭所有打开的文件并且发送消息给 worker 进程要求它们重新打开文件。Worker 进程重新打开新文件和立即关闭旧文件。因此,旧的文件几乎可以立即用于后期处理,例如压缩。 ## 升级可执行文件 @@ -104,12 +104,12 @@ PID PPID USER %CPU VSZ WCHAN COMMAND 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) ``` -需要注意的是旧的 master 进程不会关闭它的监听套接字,并且如果需要的话,可以管理它来启动 worker 进程。如果出于某些原因不能接受新的可执行文件工作方式,可以执行以下操作之一: +需要注意的是旧的 master 进程不会关闭它的监听 socket,并且如果需要的话,可以管理它来启动 worker 进程。如果出于某些原因不能接受新的可执行文件工作方式,可以执行以下操作之一: -- 发送 `HUP` 信号给就的 master 进程,旧的 master 进程将会启动不会重新读取配置文件的 worker 进程。之后,通过将 `QUIT` 信号发送到新的主进程就可以正常关闭所有的新进程。 -- 发送`TERM`信号到新的master进程,它将会发送一个消息给 worker 进程要求它们立即关闭,并且它们立即退出(如果由于某些原因新的进程没有退出,应该发送 `KILL` 信号让它们强制退出)。当新的 master 进程退出时,旧 master 将会自动启动新的 worker 进程。 +- 发送 `HUP` 信号给旧的 master 进程,旧的 master 进程将会启动不会重新读取配置文件的 worker 进程。之后,通过将 `QUIT` 信号发送到新的主进程就可以正常关闭所有的新进程。 +- 发送 `TERM` 信号到新的 master 进程,它将会发送一个消息给 worker 进程要求它们立即关闭,并且它们立即退出(如果由于某些原因新的进程没有退出,应该发送 `KILL` 信号让它们强制退出)。当新的 master 进程退出时,旧 master 将会自动启动新的 worker 进程。 -新 master 进程退出之后旧的 master 进程会从以进程 ID 命名的文件中忽略掉 `.oldbin` 后缀的文件。 +新的 master 进程退出之后,旧的 master 进程会从以进程 ID 命名的文件中忽略掉 `.oldbin` 后缀的文件。 如果升级成功,应该发送 `QUIT` 信号给旧的 master 进程,仅仅新的进程驻留: diff --git "a/\344\273\213\347\273\215/\346\234\215\345\212\241\345\231\250\345\220\215\347\247\260.md" "b/\344\273\213\347\273\215/\346\234\215\345\212\241\345\231\250\345\220\215\347\247\260.md" index 00a1287..bed83d4 100644 --- "a/\344\273\213\347\273\215/\346\234\215\345\212\241\345\231\250\345\220\215\347\247\260.md" +++ "b/\344\273\213\347\273\215/\346\234\215\345\212\241\345\231\250\345\220\215\347\247\260.md" @@ -1,6 +1,6 @@ # 服务器名称 -服务器名称是使用 [server_name](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) 指令定义的,它确定了哪一个 [server](http://nginx.org/en/docs/http/ngx_http_core_module.html#server) 块被给定的请求所使用。另请参见“[nginx 如何处理请求](http://nginx.org/en/docs/http/request_processing.html)”。可以使用精确的名称、通配符或者正则表达式来定义他们: +服务器名称是使用 [server_name](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) 指令定义的,它确定了哪一个 [server](http://nginx.org/en/docs/http/ngx_http_core_module.html#server) 块被给定的请求所使用。另请参见 [nginx 如何处理请求](nginx如何处理请求)。可以使用精确的名称、通配符或者正则表达式来定义他们: ```nginx server { @@ -27,6 +27,7 @@ server { ... } ``` + 当通过名称搜索虚拟服务器时,如果名称与多个指定的变体匹配,例如通配符和正则表达式,则将按照优先顺序选择第一个匹配的变体: 1. 精确的名称 @@ -108,7 +109,7 @@ server { 如果服务器名称被定义为 `$hostname`(0.9.4),则使用机器的主机名。 -如果有人使用 IP 地址而不是服务器名称来发出请求,则“Host”请求 header 域将包含 IP 地址,可以使用 IP 地址作为服务器名称来处理请求。 +如果有人使用 IP 地址而不是服务器名称来发出请求,则 “Host” 请求 header 域将包含 IP 地址,可以使用 IP 地址作为服务器名称来处理请求。 ```nginx server { @@ -132,7 +133,7 @@ server { ``` 这个名称没有什么特别之处,它只是众多无效域名中的一个,它永远不会与任何真实的名称相交。此外还有其他无效的名称,如 `--` 和 `!@#` 也是如此。 -nginx 到 0.6.25 版本支持特殊的名称 `*`,这常被错误地理解为所有名称。它并不是所有或者通配符服务器名称。相反,它的功能现在是由 [server_name_in_redirect](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect) 指令提供。现在不推荐使用特殊的名称 `*`,应该使用 [server_name_in_redirect](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect) 指令。请注意,无法使用 [server_name](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) 指令来指定所有名称或者默认服务器。这是 [listen](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen) 指令的属性,而不是 [server_name](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) 的。请参阅“[nginx 如何处理请求](http://nginx.org/en/docs/http/request_processing.html)”。可以定义监听 `*:80` 和 `*:8080` 端口的服务器,并指定一个为 `*:8080` 端口的默认服务器,另一个为 `*:80` 端口的默认服务器。 +nginx 到 0.6.25 版本支持特殊的名称 `*`,这常被错误地理解为所有名称。它并不是所有或者通配符服务器名称。相反,它的功能现在是由 [server_name_in_redirect](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect) 指令提供。现在不推荐使用特殊的名称 `*`,应该使用 [server_name_in_redirect](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect) 指令。请注意,无法使用 [server_name](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) 指令来指定所有名称或者默认服务器。这是 [listen](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen) 指令的属性,而不是 [server_name](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) 的。请参阅 [nginx 如何处理请求](nginx如何处理请求.md)。可以定义监听 `*:80` 和 `*:8080` 端口的服务器,并指定一个为 `*:8080` 端口的默认服务器,另一个为 `*:80` 端口的默认服务器。 ```nginx server { diff --git "a/\344\273\213\347\273\215/\350\256\260\345\275\225\346\227\245\345\277\227\345\210\260syslog.md" "b/\344\273\213\347\273\215/\350\256\260\345\275\225\346\227\245\345\277\227\345\210\260syslog.md" index 0d1e27f..9950b68 100644 --- "a/\344\273\213\347\273\215/\350\256\260\345\275\225\346\227\245\345\277\227\345\210\260syslog.md" +++ "b/\344\273\213\347\273\215/\350\256\260\345\275\225\346\227\245\345\277\227\345\210\260syslog.md" @@ -1,32 +1,35 @@ # 记录日志到 syslog -`error_log`和`access_log`指令支持把日志记录到syslog。以下参数配置日志记录到syslog: -``` +`error_log` 和 `access_log` 指令支持把日志记录到 syslog。以下配置参数将使 nginx 日志记录到 syslog: + +```yaml server=address ``` -> 定义syslog服务器的地址,可以将该地址指定为附带可选端口的域名或者IP,或者指定为“unix:”前缀之后跟着一个特定的UNIX域套接字路径。如果没有指定端口,则使用UDP的514端口。如果域名解析为多个IP地址,则使用第一个地址。 +> 定义 syslog 服务器的地址,可以将该地址指定为附带可选端口的域名或者 IP,或者指定为 “unix:” 前缀之后跟着一个特定的 UNIX 域套接字路径。如果没有指定端口,则使用 UDP 的 514 端口。如果域名解析为多个 IP 地址,则使用第一个地址。 ``` facility=string ``` -> 设置syslog的消息facility(设备),[RFC3164](https://tools.ietf.org/html/rfc3164#section-4.1.1)中定义,facility可以是`kern`,`user`,`mail`,`daemon`,`auth`,`intern`,`lpr`,`news`,`uucp`,`clock`,`authpriv`,`ftp`,`ntp`,`audit`,`alert`,`cron`,`local0`,`local7`其中一个。默认是`local7`. + +> 设置 syslog 的消息 facility(设备),[RFC3164](https://tools.ietf.org/html/rfc3164#section-4.1.1) 中定义,facility可以是 `kern`,`user`,`mail`,`daemon`,`auth`,`intern`,`lpr`,`news`,`uucp`,`clock`,`authpriv`,`ftp`,`ntp`,`audit`,`alert`,`cron`,`local0`,`local7` 中的一个,默认是 `local7`。 ``` severity=string ``` -> 设置`access_log`的消息严重程度,在[RFC3164](https://tools.ietf.org/html/rfc3164#section-4.1.1)中有定义。可能值与`error_log`指令的第二个参数(`level`,级别)相同,默认是`info`。错误消息的严重程度是有nginx确定的,因此在`error_log`指令中忽略该参数。 + +> 设置 `access_log` 的消息严重程度,在 [RFC3164](https://tools.ietf.org/html/rfc3164#section-4.1.1) 中定义。可能值与 `error_log` 指令的第二个参数( `level`,级别)相同,默认是 `info`。错误消息的严重程度由 nginx 确定,因此在 `error_log` 指令中将忽略该参数。 ``` tag=string ``` -> 设置syslog消息标签。默认是`nginx`。 +> 设置 syslog 消息标签。默认是 `nginx`。 ``` nohostname ``` -> 禁止将`hostname`域添加到syslog的消息(1.9.7)头中。 +> 禁止将 `hostname` 域添加到 syslog 的消息(1.9.7)头中。 syslog配置示例: @@ -37,7 +40,7 @@ access_log syslog:server=unix:/var/log/nginx.sock,nohostname; access_log syslog:server=[2001:db8::1]:12345,facility=local7,tag=nginx,severity=info combined; ``` -记录日志到syslog的功能自从1.7.2版本开始可用。作为我们[商业订阅](http://nginx.com/products/?_ga=2.80571039.986778370.1500745948-1890203964.1497190280)的一部分,记录日志到syslog的功能从1.5.3开始可用。 +记录日志到 syslog 的功能自从 1.7.2 版本开始可用。作为我们 [商业订阅](http://nginx.com/products/?_ga=2.80571039.986778370.1500745948-1890203964.1497190280) 的一部分,记录日志到 syslog 的功能从 1.5.3 开始可用。 ## 原文档 diff --git "a/\344\273\213\347\273\215/\350\260\203\350\257\225\346\227\245\345\277\227.md" "b/\344\273\213\347\273\215/\350\260\203\350\257\225\346\227\245\345\277\227.md" index dbbbb57..4ed7aae 100644 --- "a/\344\273\213\347\273\215/\350\260\203\350\257\225\346\227\245\345\277\227.md" +++ "b/\344\273\213\347\273\215/\350\260\203\350\257\225\346\227\245\345\277\227.md" @@ -1,31 +1,33 @@ # 调试日志 -要开启调试日志,需要在构建期间配置nginx支持调试功能。 +要开启调试日志,需要在编译 Nignx 时增加如下配置: ```bash ./configure --with-debug ... ``` -之后应该使用`error_log`指令设置调试级别: + +之后应该使用 `error_log` 指令设置调试级别: ```nginx error_log /path/to/log debug; ``` -要验证nginx是否已经配置为支持调试功能,请运行`nginx -V`命令: +要验证 nginx 是否已经配置为支持调试功能,请运行 `nginx -V` 命令: -``` +```bash configure arguments: --with-debug ... ``` -预构建Linux包为nginx-debug二进制文件的调试日志提供了开箱即用的支持,可以使用命令运行。 + +预构建 Linux 包为 nginx-debug 二进制文件的调试日志提供了开箱即用的支持,可以使用命令运行。 ```bash service nginx stop service nginx-debug start ``` -之后设置`debug`级别。Windows的nginx二进制版本始终调试日志支持构建,因此只需设置为`debug`级别即可。 +之后设置 `debug` 级别。Windows 的 nginx 在编译时就已经支持调试日志,因此只需设置 `debug` 级别即可。 -请注意,重新定义日志而不指定`debug`级别将禁止调试日志。在下面的示例中,重新定义`server`上的日志级别禁止在此服务器上做日志调试。 +请注意,重新定义日志而不指定 `debug` 级别将禁止调试日志。在下面的示例中,重新定义 `server` 上的日志级别,nginx 将不会在此服务器上做日志调试。 ```nginx error_log /path/to/log debug; @@ -35,7 +37,8 @@ http { error_log /path/to/log; ... ``` -为了避免这种情况,重新定义日志级别应该被注释掉,或者明确指定日志为`debug`级别。 + +为了避免这种情况,重新定义日志级别应该被注释掉,或者明确指定日志为 `debug` 级别。 ```nginx error_log /path/to/log debug; @@ -67,9 +70,9 @@ events { error_log memory:32m debug; ``` -在`debug`级别将日志写入到内存缓冲区中,即使在高负载情况下也不会对性能产生重大的影响。在这种情况下,可以使用如下`gdb`脚本来提取日志: +在 `debug` 级别将日志写入到内存缓冲区中,即使在高负载情况下也不会对性能产生重大的影响。在这种情况下,可以使用如下 `gdb` 脚本来提取日志: -```gdb +```bash set $log = ngx_cycle->log while $log->writer != ngx_log_memory_writer diff --git "a/\344\273\213\347\273\215/\350\277\236\346\216\245\345\244\204\347\220\206\346\226\271\345\274\217.md" "b/\344\273\213\347\273\215/\350\277\236\346\216\245\345\244\204\347\220\206\346\226\271\345\274\217.md" index 1a33894..92df0e2 100644 --- "a/\344\273\213\347\273\215/\350\277\236\346\216\245\345\244\204\347\220\206\346\226\271\345\274\217.md" +++ "b/\344\273\213\347\273\215/\350\277\236\346\216\245\345\244\204\347\220\206\346\226\271\345\274\217.md" @@ -1,19 +1,19 @@ # 连接处理方式 -nginx支持多种连接处理方式,每一种方式是否可用取决于所用用的平台。在支持几种方式的平台上,nginx会自动选择最有效的方式,然而,如果您需要明确指定使用哪一种方式,可以使用`use`指令指定。 +nginx 支持多种连接处理方式,每一种方式是否可用取决于所用的平台。在支持几种方式的平台上,nginx 会自动选择最有效的方式,然而,如果您需要明确指定使用哪一种方式,可以使用 `use` 指令指定。 支持以下集中处理方式: -- **select**,标准方式。当平台上缺乏其他有效的方式时自动构建。`--with-select-module`和`-without-select_module`配置参数开启或者禁用此模块构建。 -- **poll**,标准方式,当平台上缺乏其它有效的处理方式时自动构建此模块。`-with-poll_moudle`和`-without-poll_module`配置项开启或者禁用此模块构建。 -- **kqueue**,在FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0, and macOS使用有效。 -- **epoll**,在Linux 2.6+上使用有效。 +- **select**,标准方式。当平台上缺乏其他有效的方式时自动构建。`--with-select-module` 和 `-without-select_module` 配置参数开启或者禁用此模块构建。 +- **poll**,标准方式,当平台上缺乏其它有效的处理方式时自动构建此模块。`-with-poll_moudle` 和 `-without-poll_module` 配置项开启或者禁用此模块构建。 +- **kqueue**,在 FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0, 和 macOS 使用有效。 +- **epoll**,在 Linux 2.6+ 上使用有效。 > 从1.11.3起支持EPOLLRDHUP(Linux 2.6.17,glibc 2.8)和EPOLLEXCLUSIVE(Linux 4.5,glibc 2.24)标志。一些类似于SuSE 8.2这样的老版本提供了对2.4内核支持epll的补丁。 -- **/dev/poll**,在Solaris 7 11/99 +,HP / UX 11.22+(eventport),IRIX 6.5.15+和Tru64 UNIX 5.1A +有效。 -- **eventport**,事件端口,在Solaris 10+有效(由于已知问题,推荐使用`/dev/poll`方式代替)。 +- **/dev/poll**,在 Solaris 7 11/99+,HP / UX 11.22+(eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+ 有效。 +- **eventport**,事件端口,在 Solaris 10+有效(由于已知问题,推荐使用 `/dev/poll` 方式代替)。 ## 原文档 -- [http://nginx.org/en/docs/events.html](http://nginx.org/en/docs/events.html) \ No newline at end of file +- [http://nginx.org/en/docs/events.html](http://nginx.org/en/docs/events.html) diff --git "a/\344\273\213\347\273\215/\351\205\215\347\275\256HTTPS\346\234\215\345\212\241\345\231\250.md" "b/\344\273\213\347\273\215/\351\205\215\347\275\256HTTPS\346\234\215\345\212\241\345\231\250.md" index 80f9ef7..6713325 100644 --- "a/\344\273\213\347\273\215/\351\205\215\347\275\256HTTPS\346\234\215\345\212\241\345\231\250.md" +++ "b/\344\273\213\347\273\215/\351\205\215\347\275\256HTTPS\346\234\215\345\212\241\345\231\250.md" @@ -1,6 +1,6 @@ # 配置 HTTPS 服务器 -要配置 HTTPS 服务器,必须在 [server](http://nginx.org/en/docs/http/ngx_http_core_module.html#server) 块中的[监听套接字](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen)上启用 `ssl` 参数,并且指定[服务器证书](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate)和[私钥文件](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_key)的位置: +要配置 HTTPS 服务器,必须在 [server](http://nginx.org/en/docs/http/ngx_http_core_module.html#server) 块中的 [监听套接字](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen) 上启用 `ssl` 参数,并且指定[服务器证书](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate) 和 [私钥文件](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_key) 的位置: ```nginx server { @@ -24,10 +24,10 @@ ssl_certificate_key www.example.com.cert; 这种情况下,文件的访问也应该被限制。虽然证书和密钥存储在一个文件中,但只有证书能被发送给客户端。 -可以使用 [ssl_protocols](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols) 和 [ssl_ciphers](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers) 指令来限制连接,使其仅包括 SSL/TLS 的版本和密码。默认情况下,nginx 使用版本为 `ssl_protocols TLSv1 TLSv1.1 TLSv1.2`,密码为 `ssl_ciphers HIGH:!aNULL:!MD5`,因此通常不需要配置它们。请注意,这些指令的默认值已经被[更改](#兼容性)多次。 +可以使用 [ssl_protocols](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols) 和 [ssl_ciphers](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers) 指令来限制连接,使其仅包括 SSL/TLS 的版本和密码。默认情况下,nginx 使用版本为 `ssl_protocols TLSv1 TLSv1.1 TLSv1.2`,密码为 `ssl_ciphers HIGH:!aNULL:!MD5`,因此通常不需要配置它们。请注意,这些指令的默认值已经被 [更改](#兼容性) 多次。 ## HTTPS 服务器优化 -SSL 操作会消耗额外的 CPU 资源。在多处理器系统上,应该运行多个[工作进程(worker process)](http://nginx.org/en/docs/ngx_core_module.html#worker_processes),不得少于可用 CPU 核心的数量。大多数 CPU 密集型操作是发生在 SSL 握手时。有两种方法可以最大程度地减少每个客户端执行这些操作的次数。首先,启用 [keepalive](http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout) 连接,通过一个连接来发送多个请求,第二个是复用 SSL 会话参数,避免相同的和后续的连接发生 SSL 握手。会话存储在工作进程间共享的 SSL 会话缓存中,由 [ssl_session_cache](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache) 指令配置。1MB 缓存包含约 4000 个会话。默认缓存超时时间为 5 分钟,可以用 [ssl_session_timeout](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_timeout) 指令来增加。以下是一个优化具有 10MB 共享会话缓存的多核系统的配置示例: +SSL 操作会消耗额外的 CPU 资源。在多处理器系统上,应该运行多个 [工作进程(worker process)](http://nginx.org/en/docs/ngx_core_module.html#worker_processes),不得少于可用 CPU 核心的数量。大多数 CPU 密集型操作是发生在 SSL 握手时。有两种方法可以最大程度地减少每个客户端执行这些操作的次数。首先,启用 [keepalive](http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout) 连接,通过一个连接来发送多个请求,第二个是复用 SSL 会话参数,避免相同的和后续的连接发生 SSL 握手。会话存储在工作进程间共享的 SSL 会话缓存中,由 [ssl_session_cache](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache) 指令配置。1MB 缓存包含约 4000 个会话。默认缓存超时时间为 5 分钟,可以用 [ssl_session_timeout](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_timeout) 指令来增加。以下是一个优化具有 10MB 共享会话缓存的多核系统的配置示例: ```nginx worker_processes auto; @@ -50,6 +50,7 @@ http { ## SSL 证书链 某些浏览器可能会不承认由知名证书颁发机构签发的证书,而其他浏览器可能会接受该证书。之所以发生这种情况,是因为颁发机构已经在特定浏览器分发了一个中间证书,该证书不存在于知名可信证书颁发机构的证书库中。在这种情况下,权威机构提供了一系列链式证书,这些证书应该与已签名的服务器证书相连。服务器证书必须出现在组合文件中的链式证书之前: + ``` $ cat www.example.com.crt bundle.crt > www.example.com.chained.crt ``` @@ -65,7 +66,9 @@ server { ... } ``` + 如果服务器证书与捆绑的链式证书的相连顺序错误,nginx 将无法启动并显示错误消息: + ```bash SSL_CTX_use_PrivateKey_file(" ... /www.example.com.key") failed (SSL: error:0B080074:x509 certificate routines: @@ -120,10 +123,10 @@ server { } ``` -> 在 0.7.14 之前,无法为各个监听套接字选择性地启用 SSL,如上所示。只能使用 [ssl](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl) 指令为整个服务器启用 SSL,从而无法设置单个 HTTP/HTTPS 服务器。可以通过添加 [listen](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen) 指令的 ssl 参数来解决这个问题。因此,不建议在现在的版本中使用 [ssl](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl) 指令。 +> 在 0.7.14 之前,无法为各个 socket 选择性地启用 SSL,如上所示。只能使用 [ssl](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl) 指令为整个服务器启用 SSL,从而无法设置单个 HTTP/HTTPS 服务器。可以通过添加 [listen](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen) 指令的 ssl 参数来解决这个问题。因此,不建议在现在的版本中使用 [ssl](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl) 指令。 ## 基于名称的 HTTPS 服务器 -当配置两个或多个 HTTPS 服务器监听单个IP地址时,会出现一个常见问题: +当配置两个或多个 HTTPS 服务器监听单个 IP 地址时,会出现一个常见问题: ```nginx server { @@ -140,7 +143,8 @@ server { ... } ``` -使用了此配置,浏览器会接收默认服务器的证书,即 www.example.com,而无视所请求的服务器名称。这是由SSL 协议行为引起的。SSL连接在浏览器发送 HTTP 请求之前建立,nginx 并不知道请求的服务器名称。因此,它只能提供默认服务器的证书。 + +使用了此配置,浏览器会接收默认服务器的证书,即 www.example.com,而无视所请求的服务器名称。这是由 SSL 协议行为引起的。SSL连接在浏览器发送 HTTP 请求之前建立,nginx 并不知道请求的服务器名称。因此,它只能提供默认服务器的证书。 最古老、最强大的解决方法是为每个 HTTPS 服务器分配一个单独的 IP 地址: @@ -184,7 +188,7 @@ server { ``` ## 服务器名称指示 -在单个 IP 地址上运行多个 HTTPS 服务器的更通用的解决方案是[TLS 服务器名称指示扩展](http://en.wikipedia.org/wiki/Server_Name_Indication)(SNI,RFC 6066),其允许浏览器在SSL 握手期间传递所请求的服务器名称,因此,服务器将知道应该为此连接使用哪个证书。然而,SNI 对浏览器的支持是有限的。目前,它仅支持以下版本开始的浏览器: +在单个 IP 地址上运行多个 HTTPS 服务器的更通用的解决方案是 [TLS 服务器名称指示扩展](http://en.wikipedia.org/wiki/Server_Name_Indication)(SNI,RFC 6066),其允许浏览器在 SSL 握手期间传递所请求的服务器名称,因此,服务器将知道应该为此连接使用哪个证书。然而,SNI 对浏览器的支持是有限的。目前,它仅支持以下版本开始的浏览器: - Opera 8.0 - MSIE 7.0(但仅在 Windows Vista 或更高版本) @@ -194,7 +198,7 @@ server { > 只有域名可以在 SNI 中传递,然而,如果请求包含 IP 地址,某些浏览器可能会错误地将服务器的 IP 地址作为名称传递。不应该依靠这个。 -要在 nginx 中使用 SNI,其必须支持构建后的 nginx 二进制的 OpenSSL 库以及在可在运行时动态链接的库。自 0.9.8f 版本起(OpenSSL),如果 OpenSSL 使用了配置选项 `--enable-tlsext` 构建,是支持 SNI 的。自 OpenSSL 0.9.8j 起,此选项是默认启用。如果 nginx 是用 SNI 支持构建的,那么当使用 `-V` 开关运行时,nginx会显示这个: +要在 nginx 中使用 SNI,其必须支持构建后的 nginx 二进制的 OpenSSL 库以及在可在运行时动态链接的库。自 0.9.8f 版本起(OpenSSL),如果 OpenSSL 使用了配置选项 `--enable-tlsext` 构建,是支持 SNI 的。自 OpenSSL 0.9.8j 起,此选项是默认启用。如果 nginx 是用 SNI 支持构建的,那么当使用 `nginx -V` 命令时 ,nginx 会显示: ```bash $ nginx -V diff --git "a/\344\273\213\347\273\215/\351\205\215\347\275\256\346\226\207\344\273\266\345\272\246\351\207\217\345\215\225\344\275\215.md" "b/\344\273\213\347\273\215/\351\205\215\347\275\256\346\226\207\344\273\266\345\272\246\351\207\217\345\215\225\344\275\215.md" index 152dfc3..65fc471 100644 --- "a/\344\273\213\347\273\215/\351\205\215\347\275\256\346\226\207\344\273\266\345\272\246\351\207\217\345\215\225\344\275\215.md" +++ "b/\344\273\213\347\273\215/\351\205\215\347\275\256\346\226\207\344\273\266\345\272\246\351\207\217\345\215\225\344\275\215.md" @@ -1,13 +1,13 @@ # 配置文件度量单位 -度量单位可以是字节、千字节(单位是k或者K)或者兆字节(单位是m或者M),例如,`1024`,`8k`,`1m`。 +度量单位可以是字节、千字节(单位是 k 或者 K )或者兆字节(单位是 m 或者 M ),例如,`1024`,`8k`,`1m`。 -也可以使用g或者G单位的千兆字节。 +也可以使用 g 或者 G 单位的千兆字节。 可以指定毫秒、秒、分、小时和天等时间来设定时间间隔,使用以下单位: 单位 | 含义 -----|---- +:----|:---- ms | 毫秒 s | 秒 m | 分钟 @@ -17,10 +17,10 @@ w | 周 M | 月,30天 y | 年,365天 -可以从大到小的顺序指定多个单位,用可选的空格符间隔组合成单个值。例如,`1h 30m`与`90m`或者`5400s`时间相同。没有单位的值表示秒。建议始终加上单位。 +可以从大到小的顺序指定多个单位,用可选的空格符间隔组合成单个值。例如,`1h 30m` 与 `90m` 或者 `5400s` 时间相同。没有单位的值表示秒,建议始终加上单位。 -某些时间设置只能只能区分秒级单位。 +某些时间设置只能区分秒级单位。 ## 原文档 -[http://nginx.org/en/docs/syntax.html](http://nginx.org/en/docs/syntax.html) \ No newline at end of file +[http://nginx.org/en/docs/syntax.html](http://nginx.org/en/docs/syntax.html) diff --git "a/\345\205\266\344\273\226/linux\345\214\205.md" "b/\345\205\266\344\273\226/linux\345\214\205.md" index f5f3bbf..8b3e6e5 100644 --- "a/\345\205\266\344\273\226/linux\345\214\205.md" +++ "b/\345\205\266\344\273\226/linux\345\214\205.md" @@ -1,18 +1,18 @@ ## nginx:Linux 软件包 -目前,可用的 nginx 软件包括了以下发行和版本: +目前,nginx 软件支持以下 Linux 发行版: RHEL/CentOS: | 版本 | 支持平台 | -|------|------| +|:------|:------| | 6.x | x86_64,i386 | -| 7.x | x86_64,ppc64le | +| 7.x | x86_64,ppc64le | Debian: | 版本 | 代号 | 支持平台 | -|------|------|------| +|:------|:------|:------| | 7.x | wheezy | x86_64,i386 | | 8.x | jessie | x86_64,i386 | | 9.x | stretch | x86_64,i386 | @@ -20,7 +20,7 @@ Debian: Ubuntu: | 版本 | 代号 | 支持平台 | -|------|------|------| +|:------|:------|:------| | 12.04 | precise | x86_64,i386 | | 14.04 | trusty | x86_64,i386, aarch64/arm64 | | 16.04 | xenial | x86_64,i386, ppc64el,aarch64/arm64 | @@ -29,7 +29,7 @@ Ubuntu: SLES: | 版本 | 支持平台 | -|------|------| +|:------|:------| | 12 | x86_64 | 要启用 Linux 软件包的自动更新,可设置 RHEL/CentOS 发行版的 yum 仓库(repository),Debian/Ubuntu 发行版的 apt 仓库或 SLES 的 zypper 仓库。 @@ -95,7 +95,7 @@ enabled=1 根据所使用的发行版,使用 `rhel` 或 `centos` 替换掉 `OS`,对于 6.x 或 7.x 版本,将 `OSRELEASE` 替换为 `6` 或 `7`。 -对于 Debian/Ubuntu,为了验证 nginx 仓库签名,并且在安装 nginx 软件包时消除关于缺少 PGP 密钥的警告,必须将用于将 nginx 软件包和仓库签署的密钥添加到 `apt` 程序密钥环中。请从我们的网站下载此[密钥](http://nginx.org/keys/nginx_signing.key),并使用以下命令将其添加到 `apt` 程序密钥环: +对于 Debian/Ubuntu,为了验证 nginx 仓库签名,并且在安装 nginx 软件包时消除关于缺少 PGP 密钥的警告,必须将用于将 nginx 软件包和仓库签署的密钥添加到 `apt` 程序密钥环中。请从我们的网站下载此 [密钥](http://nginx.org/keys/nginx_signing.key),并使用以下命令将其添加到 `apt` 程序密钥环: ```bash sudo apt-key add nginx_signing.key @@ -129,14 +129,14 @@ zypper addrepo -G -t yum -c 'http://nginx.org/packages/mainline/sles/12' nginx ``` ## 源码包 -源码包可以在[源码包库](http://hg.nginx.org/pkg-oss?_ga=2.100560158.1468443122.1505551652-1890203964.1497190280)中找到。 +源码包可以在 [源码包库](http://hg.nginx.org/pkg-oss?_ga=2.100560158.1468443122.1505551652-1890203964.1497190280) 中找到。 `default` 分支保存当前主线版本的源码包,而 `stable-*` 分支包含了稳定版本的最新源码。要构建二进制包,请在 Debian/Ubuntu 上的 `debian/` 目录或在 RHEL/CentOS/SLES 上的 `rpm/SPECS/` 中运行 `make`。 -源码包在[类 BSD 的两项条款许可证](http://nginx.org/LICENSE)下发行,与 nginx 相同。 +源码包在 [类 BSD 的两项条款许可证](http://nginx.org/LICENSE) 下发行,与 nginx 相同。 ## 动态模块 -主 nginx 包使用了所有模块进行构建,没有使用到附加库,以避免额外的依赖。自 1.9.11 版本开始,nginx 支持[动态模块](http://nginx.org/en/docs/ngx_core_module.html#load_module),并将以下模块构建为动态模块,以独立软件包的形式发布: +主 nginx 包使用了所有模块进行构建,没有使用到附加库,以避免额外的依赖。自 1.9.11 版本开始,nginx 支持 [动态模块](http://nginx.org/en/docs/ngx_core_module.html#load_module),并将以下模块构建为动态模块,以独立软件包的形式发布: ``` nginx-module-geoip @@ -173,8 +173,8 @@ Debian/Ubuntu/SLES 签名默认情况被检查,但是在 RHEL/CentOS 上,需 gpgcheck= 1 ``` -由于我们的 [PGP 密钥](http://nginx.org/en/pgp_keys.html)和软件包都位于同一台服务器上,因此它们都是可信的。强烈建议另行验证下载的 PGP 密钥的真实性。PGP 具有“Web of Trust”(信任网络)的概念,当一个密钥是由别人的密钥签署的,而另一个密钥则由另一个密钥签名。它通常可以建立一个从任意密钥到您知道和信任的某人的密钥,从而验证链中第一个密钥的真实性。这个概念在 [GPG Mini Howto](http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto-1.html) 中有详细描述。我们的钥匙有足够的签名,其真实性比较容易检查。 +由于我们的 [PGP 密钥](http://nginx.org/en/pgp_keys.html) 和软件包都位于同一台服务器上,因此它们都是可信的。强烈建议另行验证下载的 PGP 密钥的真实性。PGP 具有“Web of Trust”(信任网络)的概念,当一个密钥是由别人的密钥签署的,而另一个密钥则由另一个密钥签名。它通常可以建立一个从任意密钥到您知道和信任的某人的密钥,从而验证链中第一个密钥的真实性。这个概念在 [GPG Mini Howto](http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto-1.html) 中有详细描述。我们的钥匙有足够的签名,其真实性比较容易检查。 ## 原文档 -[http://nginx.org/en/linux_packages.html#distributions](http://nginx.org/en/linux_packages.html#distributions) \ No newline at end of file +[http://nginx.org/en/linux_packages.html#distributions](http://nginx.org/en/linux_packages.html#distributions) diff --git "a/\345\274\200\345\217\221/\350\264\241\347\214\256\345\217\230\346\233\264.md" "b/\345\274\200\345\217\221/\350\264\241\347\214\256\345\217\230\346\233\264.md" index c6edebc..754ff24 100644 --- "a/\345\274\200\345\217\221/\350\264\241\347\214\256\345\217\230\346\233\264.md" +++ "b/\345\274\200\345\217\221/\350\264\241\347\214\256\345\217\230\346\233\264.md" @@ -17,7 +17,7 @@ hg clone http://hg.nginx.org/nginx 参照现有 nginx 源码的格式,在您的代码中模仿此样式。如果风格与周围的代码相一致,则更改更容易被接受。 -提交更改以创建一个 Mercurial [变更集](https://www.mercurial-scm.org/wiki/ChangeSet)(changeset)。请确保指定的[电子邮件](https://www.mercurial-scm.org/wiki/QuickStart#Setting_a_username)和变更作者的真实姓名正确无误。 +提交更改以创建一个 Mercurial [变更集](https://www.mercurial-scm.org/wiki/ChangeSet)(changeset)。请确保指定的 [电子邮件](https://www.mercurial-scm.org/wiki/QuickStart#Setting_a_username) 和变更作者的真实姓名正确无误。 提交消息应是单行简述,后跟一行空行加描述内容。第一行最好不要超过 67 个符号。可以使用 `hg export` 命令获得一个结果变更集 patch: @@ -48,7 +48,7 @@ diff -r 822b82191940 -r 2220de0521ca src/mail/ngx_mail_auth_http_module.c ## 提交前 提交更改前,有几点值得思考: -- 建议的变更应能在大部分的[支持平台](http://nginx.org/en/index.html#tested_os_and_platforms)上正常工作。 +- 建议的变更应能在大部分的 [支持平台](http://nginx.org/en/index.html#tested_os_and_platforms) 上正常工作。 - 尽量说明清楚为什么需要更改,如果可以的话,请提供一个用例。 - 通过测试套件传递您的更改是确保不会导致回归的好方法。可以使用以下命令克隆测试仓库: @@ -57,7 +57,7 @@ hg clone http://hg.nginx.org/nginx-tests ``` ## 提交变更 -提议的更改应发送到 [nginx 开发](http://nginx.org/en/support.html#nginx_devel)邮件列表。提交更改集的首选便捷方法是使用 [patchbomb](https://www.mercurial-scm.org/wiki/PatchbombExtension) 扩展。 +提议的更改应发送到 [nginx 开发](http://nginx.org/en/support.html#nginx_devel) 邮件列表。提交更改集的首选便捷方法是使用 [patchbomb](https://www.mercurial-scm.org/wiki/PatchbombExtension) 扩展。 ## 许可证 提交变更意味着授予项目一个权限以在一个适当的许可证下使用它。 diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_access_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_access_module.md" index b3d1b9f..6d5504a 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_access_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_access_module.md" @@ -31,8 +31,8 @@ location / { ### allow |\-|说明| -|------:|------| -|**语法**|**allow** `address` \| `CIDR` \| `unix:` \| `all`;| +|:------|:------| +|**语法**|**allow** `address` | `CIDR` | `unix:` | `all`;| |**默认**|——| |**上下文**|http、server、location、limit_except| @@ -41,8 +41,8 @@ location / { ### deny |\-|说明| -|------:|------| -|**语法**|**deny** `address` \| `CIDR` \| `unix:` \| `all`;| +|:------|:------| +|**语法**|**deny** `address` | `CIDR` | `unix:` | `all`;| |**默认**|——| |**上下文**|http、server、location、limit_except| @@ -50,4 +50,4 @@ location / { ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_access_module.html](http://nginx.org/en/docs/http/ngx_http_access_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_access_module.html](http://nginx.org/en/docs/http/ngx_http_access_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_addition_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_addition_module.md" index 00c2391..abb8399 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_addition_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_addition_module.md" @@ -25,7 +25,7 @@ location / { ### add_before_body |\-|说明| -|------:|------| +|:------|:------| |**语法**|**add_before_body** `uri`;| |**默认**|——| |**上下文**|http、server、location| @@ -35,7 +35,7 @@ location / { ### add_after_body |\-|说明| -|------:|------| +|:------|:------| |**语法**|**add_after_body** `uri`;| |**默认**|——| |**上下文**|http、server、location| @@ -45,7 +45,7 @@ location / { ### addition_types |\-|说明| -|------:|------| +|:------|:------| |**语法**|**addition_types** `mime-type ...`;| |**默认**|addition_types text/html;| |**上下文**|http、server、location| @@ -55,4 +55,4 @@ location / { ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_addition_module.html](http://nginx.org/en/docs/http/ngx_http_addition_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_addition_module.html](http://nginx.org/en/docs/http/ngx_http_addition_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_basic_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_basic_module.md" index c84cccc..fff6b37 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_basic_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_basic_module.md" @@ -26,8 +26,8 @@ location / { ### auth_basic |\-|说明| -|------:|------| -|**语法**|**auth_basic** `string` \| `off`;| +|:------|:------| +|**语法**|**auth_basic** `string` | `off`;| |**默认**|auth_basic off;| |**上下文**|http、server、location、limit_except| @@ -36,7 +36,7 @@ location / { ### auth_basic_user_file |\-|说明| -|------:|------| +|:------|:------| |**语法**|**auth_basic_user_file** `file`;| |**默认**|——| |**上下文**|http、server、location、limit_except| @@ -62,4 +62,4 @@ name3:password3 ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html](http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html](http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_jwt_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_jwt_module.md" index f065710..4e6f682 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_jwt_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_jwt_module.md" @@ -31,8 +31,8 @@ location / { ### auth_jwt |\-|说明| -|------:|------| -|**语法**|**auth_jwt** `string [token=$variable]` \| `off`;| +|:------|:------| +|**语法**|**auth_jwt** `string [token=$variable]` | `off`;| |**默认**|auth_jwt off;| |**上下文**|http、server、location| @@ -49,7 +49,7 @@ auth_jwt "closed site" token=$cookie_auth_token; ### auth_basic_user_file |\-|说明| -|------:|------| +|:------|:------| |**语法**|**auth_jwt_header_set** `$variable name`;| |**默认**|——| |**上下文**|http| @@ -60,7 +60,7 @@ auth_jwt "closed site" token=$cookie_auth_token; ### auth_jwt_claim_set |\-|说明| -|------:|------| +|:------|:------| |**语法**|**auth_jwt_claim_set** `$variable name`;| |**默认**|——| |**上下文**|http| @@ -71,7 +71,7 @@ auth_jwt "closed site" token=$cookie_auth_token; ### auth_jwt_key_file |\-|说明| -|------:|------| +|:------|:------| |**语法**|**auth_jwt_key_file** `file`;| |**默认**|——| |**上下文**|http、server、location| @@ -92,4 +92,4 @@ auth_jwt "closed site" token=$cookie_auth_token; 返回 [JWT claim](https://tools.ietf.org/html/rfc7519#section-4) 的值 ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html](http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html](http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_request_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_request_module.md" index 596d93e..2c0b743 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_request_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_auth_request_module.md" @@ -39,8 +39,8 @@ location = /auth { ### auth_request |\-|说明| -|------:|------| -|**语法**|**auth_request** `uri` \| `off`;| +|:------|:------| +|**语法**|**auth_request** `uri` | `off`;| |**默认**|auth_request off;| |**上下文**|http、server、location| @@ -49,7 +49,7 @@ location = /auth { ### auth_request_set |\-|说明| -|------:|------| +|:------|:------| |**语法**|**auth_request_set** `$variable value;`;| |**默认**|——| |**上下文**|http| @@ -57,4 +57,4 @@ location = /auth { 在授权请求完成后,将请求 `variable`(变量)设置为给定的 `value`(值)。该值可能包含授权请求中的变量,例如 `$upstream_http_*`。 ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_auth_request_module.html](http://nginx.org/en/docs/http/ngx_http_auth_request_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_auth_request_module.html](http://nginx.org/en/docs/http/ngx_http_auth_request_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_autoindex_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_autoindex_module.md" index 4209816..e500358 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_autoindex_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_autoindex_module.md" @@ -26,8 +26,8 @@ location / { ### autoindex |\-|说明| -|------:|------| -|**语法**|**autoindex** `on` \| `off`;| +|:------|:------| +|**语法**|**autoindex** `on` | `off`;| |**默认**|autoindex off;| |**上下文**|http、server、location| @@ -36,8 +36,8 @@ location / { ### autoindex_exact_size |\-|说明| -|------:|------| -|**语法**|**autoindex_exact_size** `on` \| `off`;| +|:------|:------| +|**语法**|**autoindex_exact_size** `on` | `off`;| |**默认**|autoindex_exact_size on;| |**上下文**|http、server、location| @@ -46,8 +46,8 @@ location / { ### autoindex_format |\-|说明| -|------:|------| -|**语法**|**autoindex_format** `html` \| `xml` \| `json` \| `jsonp`;| +|:------|:------| +|**语法**|**autoindex_format** `html` | `xml` | `json` | `jsonp`;| |**默认**|autoindex_format html;| |**上下文**|http、server、location| |**提示**|该指令在 1.7.9 版本中出现| @@ -61,12 +61,12 @@ XML 输出可以使用 [ngx_http_xslt_module](ngx_http_xslt_module.md) 模块进 ### autoindex_localtime |\-|说明| -|------:|------| -|**语法**|**autoindex_localtime** `on` \| `off`;| +|:------|:------| +|**语法**|**autoindex_localtime** `on` | `off`;| |**默认**|autoindex_localtime off;| |**上下文**|http、server、location| 对于 HTML [格式](#autoindex_format),指定目录列表中的时间是否应使用本地时区或 UTC 输出。 ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_autoindex_module.html](http://nginx.org/en/docs/http/ngx_http_autoindex_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_autoindex_module.html](http://nginx.org/en/docs/http/ngx_http_autoindex_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_charset_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_charset_module.md" index ec88e2c..71cd5cb 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_charset_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_charset_module.md" @@ -32,8 +32,8 @@ source_charset koi8-r; ### charset |\-|说明| -|------:|------| -|**语法**|**charset** `charset` \| `off`;| +|:------|:------| +|**语法**|**charset** `charset` | `off`;| |**默认**|charset off;| |**上下文**|http、server、location、location 中的 if| @@ -58,7 +58,7 @@ charset_map iso-8859-5 _ { } ### charset_map |\-|说明| -|------:|------| +|:------|:------| |**语法**|**charset_map** `charset1 charset2 { ... }`;| |**默认**|——| |**上下文**|http| @@ -94,7 +94,7 @@ charset_map koi8-r utf-8 { ### charset_types |\-|说明| -|------:|------| +|:------|:------| |**语法**|**charset_types** `mime-type ...`;| |**默认**|charset_types text/html text/xml text/plain text/vnd.wap.wml application/javascript application/rss+xml;| @@ -108,8 +108,8 @@ application/javascript application/rss+xml;| ### override_charset |\-|说明| -|------:|------| -|**语法**|**override_charset** `on` \| `off`;| +|:------|:------| +|**语法**|**override_charset** `on` | `off`;| |**默认**|override_charset off;| |**上下文**|http、server、location、location 中的 if| @@ -120,7 +120,7 @@ application/javascript application/rss+xml;| ### source_charset |\-|说明| -|------:|------| +|:------|:------| |**语法**|**source_charset** `charset`;| |**默认**|——| |**上下文**|http、server、location、location 中的 if| @@ -128,4 +128,4 @@ application/javascript application/rss+xml;| 定义响应的源字符集。如果此字符集与 [charset](#charset) 指令中指定的字符集不同,则执行转换。 ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_charset_module.html](http://nginx.org/en/docs/http/ngx_http_charset_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_charset_module.html](http://nginx.org/en/docs/http/ngx_http_charset_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_core_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_core_module.md" index 3ada6eb..e09490c 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_core_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_core_module.md" @@ -84,8 +84,8 @@ ### absolute_redirect |\-|说明| -|------:|------| -|**语法**|**absolute_redirect** `on` \| `off`;| +|:------|:------| +|**语法**|**absolute_redirect** `on` | `off`;| |**默认**|absolute_redirect on;| |**上下文**|http、server、location| |**提示**|该指令在 1.11.8 版本中出现| @@ -97,8 +97,8 @@ ### aio |\-|说明| -|------:|------| -|**语法**|**aio** `on` \| `off` \| `threads[=pool]`;| +|:------|:------| +|**语法**|**aio** `on` | `off` | `threads[=pool]`;| |**默认**|aio off;| |**上下文**|http、server、location| |**提示**|该指令在 0.8.11 版本中出现| @@ -167,8 +167,8 @@ aio threads=pool$disk; ### aio_write |\-|说明| -|------:|------| -|**语法**|**aio_write** `on` \| `off`;| +|:------|:------| +|**语法**|**aio_write** `on` | `off`;| |**默认**|aio_write off;| |**上下文**|http、server、location| |**提示**|该指令在 1.9.13 版本中出现| @@ -178,4 +178,4 @@ aio threads=pool$disk; **待续……** ## 原文档 -[http://nginx.org/en/docs/http/ngx_http_core_module.html](http://nginx.org/en/docs/http/ngx_http_core_module.html) \ No newline at end of file +[http://nginx.org/en/docs/http/ngx_http_core_module.html](http://nginx.org/en/docs/http/ngx_http_core_module.html) diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_gzip_static_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_gzip_static_module.md" index 650525d..be9a49a 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_gzip_static_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_gzip_static_module.md" @@ -8,7 +8,9 @@ 该模块默认不会被构建到 nginx 中,需要在编译时加入 `--with-http_gzip_static_module` 配置参数启用。 + ## 配置示例 + ```nginx gzip_static on; gzip_proxied expired no-cache no-store private auth; @@ -20,8 +22,8 @@ gzip_proxied expired no-cache no-store private auth; ### gzip_static |\-|说明| -|------:|------| -|**语法**|**gzip_static** `on` \| `off` \| `always`; | +|:------|:------| +|**语法**|**gzip_static** `on` | `off` | `always`; | |**默认**|gzip_static off;| |**上下文**|http、server、location| @@ -29,4 +31,4 @@ gzip_proxied expired no-cache no-store private auth; 值为 **always** (1.3.6),在所有情况下都会使用压缩文件,不检查客户端是否支持。如果磁盘上没有未被压缩的文件或者 [ngx_http_gunzip_module](ngx_http_gunzip_module.md) 模块被启用,这个参数非常有用。 -文件可以使用`gzip`命令,或者任何兼容文件进行压缩。建议压缩文件和源文件的修改日期和时间保持一致。 \ No newline at end of file +文件可以使用`gzip`命令,或者任何兼容文件进行压缩。建议压缩文件和源文件的修改日期和时间保持一致。 diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_random_index_module.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_random_index_module.md" index 7a037aa..401a096 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_random_index_module.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/http/ngx_http_random_index_module.md" @@ -14,12 +14,12 @@ location / { ### random_index |\-|说明| -|------:|------| -|**语法**|**random_index** `on` \| `off`;| +|:------|:------| +|**语法**|**random_index** `on` | `off`;| |**默认**|random_index off;| |**上下文**|location| -启用或禁用 `location`周边的模块处理。 +启用或禁用 `location` 周边的模块处理。 ## 原文档 diff --git "a/\346\250\241\345\235\227\345\217\202\350\200\203/\346\240\270\345\277\203\345\212\237\350\203\275.md" "b/\346\250\241\345\235\227\345\217\202\350\200\203/\346\240\270\345\277\203\345\212\237\350\203\275.md" index 4123133..7874467 100644 --- "a/\346\250\241\345\235\227\345\217\202\350\200\203/\346\240\270\345\277\203\345\212\237\350\203\275.md" +++ "b/\346\250\241\345\235\227\345\217\202\350\200\203/\346\240\270\345\277\203\345\212\237\350\203\275.md" @@ -56,12 +56,12 @@ events { ### accept_mutex |\-|说明| -|------:|------| -|**语法**|**accept_mutex** `on` \| `off`;| +|:------|:------| +|**语法**|**accept_mutex** `on` | `off`;| |**默认**|accept_mutex off;| |**上下文**|events| -如果启用了`accept_mutex`,则工作进程将轮流接受新连接。否则,将新连接通知给所有工作进程,如果新连接数量较少,某些工作进程可能会浪费系统资源。 +如果启用了 `accept_mutex`,则工作进程将轮流接受新连接。否则,将新连接通知给所有工作进程,如果新连接数量较少,某些工作进程可能会浪费系统资源。 > 在支持 [EPOLLEXCLUSIVE](http://nginx.org/en/docs/events.html#epoll) 标志(1.11.3)或使用 [reuseport](#reuseport) 的系统上,不需要启用 `accept_mutex`。 @@ -70,7 +70,7 @@ events { ### accept_mutex_delay |\-|说明| -|------:|------| +|:------|:------| |**语法**|**accept_mutex_delay** `time`;| |**默认**|accept_mutex_delay 500ms;| |**上下文**|events| @@ -80,8 +80,8 @@ events { ### daemon |\-|说明| -|------:|------| -|**语法**|**daemon** `on` \| `off`;| +|:------|:------| +|**语法**|**daemon** `on` | `off`;| |**默认**|daemon on;| |**上下文**|main| @@ -90,8 +90,8 @@ events { ### debug_connection |\-|说明| -|------:|------| -|**语法**|**debug_connection** `address` \| `CIDR` \| `unix:`;| +|:------|:------| +|**语法**|**debug_connection** `address` | `CIDR` | `unix:`;| |**默认**|——| |**上下文**|events| @@ -114,8 +114,8 @@ events { ### debug_points |\-|说明| -|------:|------| -|**语法**|**debug_points** `abort` \| `stop`;| +|:------|:------| +|**语法**|**debug_points** `abort` | `stop`;| |**默认**|——| |**上下文**|main| @@ -144,7 +144,7 @@ events { ### env |\-|说明| -|------:|------| +|:------|:------| |**语法**|**env** `variable[=value]`;| |**默认**|env TZ;| |**上下文**|main| @@ -170,7 +170,7 @@ env OPENSSL_ALLOW_PROXY_CERTS=1; ### events |\-|说明| -|------:|------| +|:------|:------| |**语法**|**events** `{ ... }`| |**默认**|——| |**上下文**|main| @@ -180,8 +180,8 @@ env OPENSSL_ALLOW_PROXY_CERTS=1; ### include |\-|说明| -|------:|------| -|**语法**|**include** `file` \| `mask`;| +|:------|:------| +|**语法**|**include** `file` | `mask`;| |**默认**|——| |**上下文**|any| @@ -193,10 +193,10 @@ env OPENSSL_ALLOW_PROXY_CERTS=1; include mime.types; include vhosts/*.conf; ``` -### load_module +### load_module |\-|说明| -|------:|------| +|:------|:------| |**语法**|**load_module** `file`;| |**默认**|——| |**上下文**|main| @@ -211,7 +211,7 @@ load_module modules/ngx_mail_module.so; ``` |\-|说明| -|------:|------| +|:------|:------| |**语法**|**lock_file** `file`;| |**默认**|lock_file logs/nginx.lock;| |**上下文**|main| @@ -221,8 +221,8 @@ nginx 使用锁机制来实现 [accept_mutex](#accept_mutex) 并序列化对共 ### master_process |\-|说明| -|------:|------| -|**语法**|**master_process** `on` \| `off`;| +|:------|:------| +|**语法**|**master_process** `on` | `off`;| |**默认**|master_process on;| |**上下文**|main| @@ -231,8 +231,8 @@ nginx 使用锁机制来实现 [accept_mutex](#accept_mutex) 并序列化对共 ### multi_accept |\-|说明| -|------:|------| -|**语法**|**multi_accept** `on` \| `off`;| +|:------|:------| +|**语法**|**multi_accept** `on` | `off`;| |**默认**|multi_accept off;| |**上下文**|events| @@ -243,8 +243,8 @@ nginx 使用锁机制来实现 [accept_mutex](#accept_mutex) 并序列化对共 ### pcre_jit |\-|说明| -|------:|------| -|**语法**|**pcre_jit** `on` \| `off`;| +|:------|:------| +|**语法**|**pcre_jit** `on` | `off`;| |**默认**|pcre_jit off;| |**上下文**|main| |**提示**|该指令在 1.1.12 版本中出现| @@ -258,7 +258,7 @@ PCRE JIT 可以明显地加快正则表达式的处理。 ### pid |\-|说明| -|------:|------| +|:------|:------| |**语法**|**pid** `file`;| |**默认**|——| |**上下文**|main| @@ -268,7 +268,7 @@ PCRE JIT 可以明显地加快正则表达式的处理。 ### ssl_engine |\-|说明| -|------:|------| +|:------|:------| |**语法**|**ssl_engine** `device`;| |**默认**|——| |**上下文**|main| @@ -278,7 +278,7 @@ PCRE JIT 可以明显地加快正则表达式的处理。 ### thread_pool |\-|说明| -|------:|------| +|:------|:------| |**语法**|**thread_pool** `name threads=number [max_queue=number]`;| |**默认**|thread_pool default threads=32 max_queue=65536;| |**上下文**|main| @@ -293,7 +293,7 @@ PCRE JIT 可以明显地加快正则表达式的处理。 ### timer_resolution |\-|说明| -|------:|------| +|:------|:------| |**语法**|**timer_resolution** `interval`;| |**默认**|——| |**上下文**|main| @@ -315,7 +315,7 @@ timer_resolution 100ms; ### use |\-|说明| -|------:|------| +|:------|:------| |**语法**|**use** `method`;| |**默认**|——| |**上下文**|events| @@ -325,7 +325,7 @@ timer_resolution 100ms; ### user |\-|说明| -|------:|------| +|:------|:------| |**语法**|**user** `user [group]`;| |**默认**|——| |**上下文**|events| @@ -335,7 +335,7 @@ timer_resolution 100ms; ### worker_aio_requests |\-|说明| -|------:|------| +|:------|:------| |**语法**|**worker_aio_requests** `number`;| |**默认**|worker_aio_requests 32;| |**上下文**|events| @@ -346,7 +346,7 @@ timer_resolution 100ms; ### worker_connections |\-|说明| -|------:|------| +|:------|:------| |**语法**|**worker_connections** `number`;| |**默认**|worker_connections 512;| |**上下文**|events| @@ -358,7 +358,7 @@ timer_resolution 100ms; ### worker_cpu_affinity |\-|说明| -|------:|------| +|:------|:------| |**语法**|**worker_cpu_affinity** `cpumask ...`;
**worker_cpu_affinity** `auto [cpumask]`;| |**默认**|——| |**上下文**|main| @@ -399,7 +399,7 @@ worker_cpu_affinity auto 01010101; ### worker_priority |\-|说明| -|------:|------| +|:------|:------| |**语法**|**worker_priority** `number`;| |**默认**|worker_priority 0;| |**上下文**|main| @@ -414,8 +414,8 @@ worker_priority -10; ### worker_processes |\-|说明| -|------:|------| -|**语法**|**worker_processes** `number` \| `auto`;| +|:------|:------| +|**语法**|**worker_processes** `number` | `auto`;| |**默认**|worker_processes 1;| |**上下文**|main| @@ -428,7 +428,7 @@ worker_priority -10; ### worker_rlimit_core |\-|说明| -|------:|------| +|:------|:------| |**语法**|**worker_rlimit_core** `size`;| |**默认**|——| |**上下文**|main| @@ -438,7 +438,7 @@ worker_priority -10; ### worker_rlimit_nofile |\-|说明| -|------:|------| +|:------|:------| |**语法**|**worker_rlimit_nofile** `number`;| |**默认**|——| |**上下文**|main| @@ -448,7 +448,7 @@ worker_priority -10; ### worker_shutdown_timeout |\-|说明| -|------:|------| +|:------|:------| |**语法**|**worker_shutdown_timeout** `time`;| |**默认**|——| |**上下文**|main| @@ -459,7 +459,7 @@ worker_priority -10; ### working_directory |\-|说明| -|------:|------| +|:------|:------| |**语法**|**working_directory** `directory`;| |**默认**|——| |**上下文**|main| @@ -468,4 +468,4 @@ worker_priority -10; ## 原文档 -[http://nginx.org/en/docs/ngx_core_module.html](http://nginx.org/en/docs/ngx_core_module.html) \ No newline at end of file +[http://nginx.org/en/docs/ngx_core_module.html](http://nginx.org/en/docs/ngx_core_module.html)