使用Nginx

该系列的前两篇文章进行了概述 ,还讨论了Nginx的基本模块 。 本教程通过指导您一些有关管理配置文件和在配置中设置基本参数的基本技术,将帮助您开始使用Nginx。

分割配置文件

安装Nginx之后, /etc/nginx/目录将具有以下内容:

Nginx配置目录
  • 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。

其他资源

  1. Nginx如何处理请求
  2. Nginx调试

翻译自: https://code.tutsplus.com/tutorials/working-with-nginx--cms-23764

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值