该系列的前两篇文章进行了概述 ,还讨论了Nginx的基本模块 。 本教程通过指导您一些有关管理配置文件和在配置中设置基本参数的基本技术,将帮助您开始使用Nginx。
分割配置文件
安装Nginx之后, /etc/nginx/
目录将具有以下内容:
![Nginx配置目录](https://i-blog.csdnimg.cn/blog_migrate/d0e5e3ace1b30ec45714f880b5317858.png)
-
nginx.conf
:主要配置文件。 -
conf.d
:用于诸如模块加载之类的事情,以及不特定于单个虚拟主机的事情。 -
sites-available
:存储所有虚拟主机配置,即使当前未启用它们。 -
sites-enabled
:所有已启用的站点(指向站点可用文件夹中文件的符号链接)。 -
mime.types
:将文件扩展名映射到响应的MIME类型。
这个sites- *文件夹的工作流程使事情变得更有条理。 如果有多个网站,即虚拟主机,则每个虚拟主机都会获得自己的配置文件。 sites-available
可以包含所有虚拟主机配置文件,而启用的文件可以从sites-enabled
进行符号链接。
安装Nginx时, 此配置是默认配置 。 您可以看到 include
如何允许包含外部配置文件。 如果这些包含的文件中有任何错误,Nginx将无法加载。
多个虚拟主机
与其他任何Web服务器一样,Nginx允许您配置多个虚拟主机。
# sites-enabled/example.com.conf
server {
listen 80;
# both address and port, or only address or only port.
server_name example.com www.example.com;
# names of a virtual server. Can use wildcard & regular expressions.
access_log /var/log/nginx/example_com_access.log;
error_log /var/log/nginx/example_com_error.log;
# sets configuration depending on a request URI.
location / {
root /var/www/www.example.com;
index index.html index.htm;
}
}
这是通过服务器块完成的。 listen指令描述了Web服务器正在监听的端口, server_name指令列出了所有服务器名称。 在location中 ,您可以定义虚拟主机的工作方式。
重新加载Nginx
Nginx主进程的进程ID将被写入pid指令定义的文件,例如pid /var/run/nginx.pid;
。 该主进程支持以下信号:
INT | 快速关机 |
退出 | 正常关机 |
HUP | 重新加载配置+ Workers正常关机+重新启动 |
1号 | 重新打开日志文件 |
2号 | 快速升级可执行文件 |
绞盘 | 正常关闭工作进程 |
为了重新加载Nginx,您可以运行kill -HUP <PID nginx master proc>
。
各个工人的过程也可以通过信号进行控制。
INT | 快速关机 |
退出 | 正常关机 |
1号 | 重新打开日志文件 |
绞盘 | 调试异常终止 *需要调试点 |
Nginx处于调试模式
为此,您将需要使用调试标志( --with-debug
)编译Nginx。 之后,可以使用debug_connection
伪指令调试来自特定地址的连接。
error_log /var/log/nginx/errors;
events {
debug_connection 192.168.1.18;
}
当寻求有关Nginx的帮助时,请确保共享nginx -V
的输出,完整配置和调试日志。
404和其他错误页面
这可以通过error_page
指令来实现。 它定义了将为错误显示的资源。
# 1
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 2
error_page 404 =200 /empty.gif;
# change the response code to another using the “=response”
error_page 404 =301 http://example.com/notfound.html;
# use redirects for error processing
# 3
# error processing with a named location
location / {
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
还有一个名为recursive_error_pages
的指令,它允许使用error_page指令进行多次重定向。 例如:
error_page 400 404 /404.html;
recursive_error_pages on;
location ~* ^/(404\.html|500\.html|503\.html)$ {
log_not_found off;
# Disables logging of errors about not found files.
error_page 404 = @default;
}
location @default {
log_not_found on;
root /var/www/default;
}
自动索引目录
找不到索引文件的请求将路由到此模块(ngx_http_autoindex_module)。 [示例:本地网络共享]
location / {
root /var/www/localdropbox;
autoindex on;
# Enables or disables the directory listing output.
autoindex_exact_size off;
# Exact file size vs rounding them to nearest KB, MB, GB.
autoindex_format html;
# format of a directory listing. XML, JSON, JSONP possible.
autoindex_localtime on;
# local TZ vs UTC.
}
文件上传大小
当用户尝试上载文件时,“请求实体太大”(413)是常见的错误消息。 此文件大小由Nginx配置变量控制:
variable client_max_body_size 10M;
#M代表兆字节。
这设置了客户端请求主体的最大大小,该大小在“ Content-Length”请求标头中指定。 要获得这些上传的一些用户反馈,您还可以使用nginx-upload-progress-module 。 您需要附加一个X-Progress-ID,以帮助唯一标识要上传的文件。
饼干
Nginx具有提供cookie来识别最终用户的非常有用且精巧的功能。 在您不想使用外部分析的情况下,可以通过提供cookie来填充ngx_http_userid_module
模块。
userid on;
userid_name uid;
userid_domain example.com;
userid_path /;
userid_expires 365d;
userid_p3p 'policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"';
通过启用此模块,变量$uid_reset
, $uid_got
和$uid_set
变得可用。 这些可以帮助您编写更复杂的重写规则。
这些步骤无疑应该使您开始更高效地使用Nginx。
其他资源
翻译自: https://code.tutsplus.com/tutorials/working-with-nginx--cms-23764