Nginx配置详解

Nginx是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

Nginx (engine x) 也是一个高性能的 HTTP 和反向代理服务,也是一个 IMAP/POP3/SMTP 服务。

Nginx配置文件结构

Nginx 的配置文件 nginx.conf 位于其安装目录的 conf 目录下。

nginx.conf 由多个块组成,最外面的块是 main
main 包含 Eventshttp
http 包含 upstream 和多个 server
server 又包含多个location

main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 locationURL匹配特定位置的设置)。

  • main 块设置的指令将影响其他所有设置;
  • server 块的指令主要用于指定主机和端口;
  • upstream 指令主要用于负载均衡,设置一系列的后端服务器;
  • location 块用于匹配网页位置。

这四者之间的关系:server 继承 mainlocation 继承 serverupstream 既不会继承其他设置也不会被继承。
在这四个部分当中,每个部分都包含若干指令,这些指令主要包含 Nginx 的主模块指令、事件模块指令、HTTP 核心模块指令,同时每个部分还可以使用其他 HTTP 模块指令,例如 Http SSL模块、HttpGzip Static 模块和 Http Addition 模块等。

Nginx的全局配置

每个配置选项的含义解释如下:

  • user 是个主模块指令,指定 Nginx Worker 进程运行用户以及用户组,默认由 nobody 账号运行。
  • worker_processes 是个主模块指令,指定了 Nginx 要开启的进程数。每个 Nginx 进程平均耗费10M~12M内存。建议指定和 CPU 的数量一致即可。
  • error_log 是个主模块指令,用来定义全局错误日志文件。日志输出级别有 debuginfonoticewarnerrorcrit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
  • pid 是个主模块指令,用来指定进程 pid 的存储文件位置。
  • worker_rlimit_nofile 用于绑定 worker 进程和 CPU,限Linux内核2.4以上可用。

events 事件指令是设定 Nginx 的工作模式及连接数上限:

use 是个事件模块指令,用来指定 Nginx 的工作模式。Nginx 支持的工作模式有 selectpollkqueueepollrtsig/dev/poll。其中 selectpoll 都是标准的工作模式,kqueueepoll 是高效的工作模式,不同的是 epoll 用在 Linux 平台上,而 kqueue 用在 BSD 系统中。对于 Linux 系统,epoll 工作模式是首选。

worker_connections 也是个事件模块指令,用于定义 Nginx 每个进程的最大连接数,默认是1024。最大客户端连接数由 worker_processesworker_connections 决定,即 Max_client=worker_processes*worker_connections

在作为反向代理时,max_clients 变为:max_clients = worker_processes * worker_connections/4

进程的最大连接数受 Linux 系统进程的最大打开文件数限制,在执行操作系统命令 ulimit -n 65536worker_connections 的设置才能生效。

Nginx的反向代理配置

server {
        listen 80;
        server_name cikaros.top;
        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;
        server_name cikaros.top;

        ssl_certificate /etc/nginx/ssl/cikaros.top.crt;
        ssl_certificate_key /etc/nginx/ssl/cikaros.top.key;

        client_max_body_size 10M;

        location / {
                proxy_pass http://10.1.1.100:2561;
                proxy_set_header Host $host:$proxy_port;
        }
}

Nginx配置详解
https://blog.cikaros.top/doc/2f811586.html
作者
Cikaros
发布于
2021年11月5日
许可协议