Nginx配置

Nginx配置文件的基本结构

Nginx配置文件由一组指令(directives)组成,指令分为简单指令和块指令。

  • 简单指令 simple directives

    简单的指令格式为:

    <指令名> <参数>;
    
  • 块指令block directives(上下文 context)

    块指令格式为:

    <指令名> ...{
        # 简单指令
        # 块指令
    }
    

    将Nginx配置为反向代理服务器需要的块指令有events, http, server, location, 其他的块指令还有作为负载均衡时用的upstream,作为邮件服务器时用的mail等,块指令内可以嵌套其他简单指令和块指令。另外,文件的最外层被成为main context

  • 文件基本结构

    举个例子,这是一个Nginx配置文件的基本结构

    nginx.conf

    user nobody;
    worker process 1;
    error_log   /var/log/nginx/error.log warn;
    pid         /var/run/nginx.pid;
    
    events {
        ...
    }
    # some comments
    http {
        ...
        server {  # server1
            location ... {  # location 1
                ...
            }
            location ... {  # location 2
                ...
            }
        }
        server {  # server 2
            ...
        }
    }
    

    示例文件的最开始是4个简单指令

    • user指定了Nginx工作进程运行时使用的用户和组。语法为user username [groupname]当groupname省略时与username相同,默认为user nobody nobody
    • worker process指定了工作进程的个数。
    • error log指定了存放错误日志的文件。语法为error_log file [level],level可选debug,info,notice,warn,error,crit,alert,emerg,默认为error。
    • pid指定了存放主进程id的文件。

    接下来是events块指令,用来配置网络连接相关的的参数。比如最大连接数,事件驱动模型等等。

静态内容服务器

  • 请求匹配

    server {
        location / {
            root /data/www;
        }
    
        location /images/ {
            root /data;
        }
    }
    

    Nginx会根据不同的请求路径,将请求匹配到不同的location,比如/可以匹配任何路径,/images/可以匹配任何以/images/开头的路径。当有多个location匹配时,Nginx选择最长前缀对应的location来处理请求。比如以下url

    https://localhost/images/example.png
    

    匹配到/images/而不是/,最终被映射为文件/data/images/example.png

反向代理服务器

server {
    location / {
        proxy_pass https://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}

proxy_passngx_http_proxy_module模块中的指令,用于转发请求。模块中的其他指令可以查官方文档

负载均衡

http {
    upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }
    server {
        listen 80;
        location / {
            proxy_pass https://localhost:8080;
        }
    }
}

配置文件生成工具

配置文件的指令非常多,要全部记住是很困难的,网上有一些自动生成配置文件的工具,可以通过图新界面配置一些基本的功能,生成基本的配置文件,再根据需要自己修改。这里列出几个在线生成工具:

发表评论

电子邮件地址不会被公开。 必填项已用*标注