Nginx常用配置

Posted 深圳-逸遥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx常用配置相关的知识,希望对你有一定的参考价值。

全局配置段

# 允许运行nginx服务器的用户和用户组
user www-data;

# 并发连接数处理(进程数量),跟cpu核数保存一致;
worker_processes auto;

# 存放 nginx的进程号
pid /run/nginx.pid;

# 定义相关属性
events {
    # 一个进程允许处理的最大连接数768
    worker_connections 768; 
    # multi_accept on;
    # 定义使用的内核模型,默认开启epoll
    # use   epoll   

}

http配置段

http {
    # 开启高效文件传输模式
    sendfile on; 
    
    ###### 防止网络阻塞 ######
    tcp_nopush on;
    tcp_nodelay on;
    
    # 长连接超时时间65秒
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    ###### 允许处理文件类型 ######
    # 文件扩展名与文件类型映射表
    include /etc/nginx/mime.types;
    # 默认文件类型
    default_type application/octet-stream;


    ###### 日志配置 ######
    # Logging Settings
    ##
    
    # 日志文件存放
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;


    # 开启gzip压缩输出
    gzip on;

    # 开启目录列表访问,搭建下载服务时使用,默认关闭
    # autoindex on; 
    
    # 配置文件从上往下读,类似django路由转发
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    # 如果不导入Nginx.conf配置,可以直接在这里添加server
    # server {
    #   listen 172.17.1.142:80;

    #   location /performance {
    #     alias /etc/nginx/my_gitbook/_book/;
    #   index index.html;
    #               }
    # }
}

Server常见配置

server {
    # 监听端口号
    listen ip:port;
    server_name 主机名;
    ...
}
listen的表示方式
形式 描述
ip:port 精确表示
ip 自动监听80端口
port 自动监听80端口
default_server 自动使用默认地址localhost:80
server_name

作用:对不同的域名的请求分类
格式:

形式 例子
完整样式 www.example.com
前缀正则样式 *.example.com
后缀正则样式 www.example.*

location

location 根据Server匹配到的请求路径和关键字去响应和处理, 支持正则匹配
普通匹配:
相同的路由规则下:

类型 含义 匹配方式 优先级 样式
=/路径 精确匹配 前缀 1 location = /image {}
^~ 优先匹配 前缀 2 location ^~ /page {}
@ 内部重定向 前缀 location @name {}
空 / 通用匹配 前缀 location / {}
# ----------匹配规则优先级---------------
# 同样对于根目录匹配
# 通用匹配 最后匹配
    location / {
        return 400;
    }
    精确匹配  优先级最高
    location = / {
        return 401;
    }
    优先匹配 优先级第二
    location ~ / {
        return 402;
    }

正则匹配:

location 基础设置

location / {
        root   /var/www/html;                   # 指定响应请求的文件所在路径
        index  index.php index.html index.htm;  # 指定响应请求的默认文件名称
        expires 7d;                             # 指定响应请求的文件过期时间,一般用于静态文件
        try_files $uri $uri/ =404;              # 如果root指定的路径下有查找的文件,就返回,否则报错
}
  • root属性
    作用:定义Server相应请求的html文件所在路径
    表现形式: root /var/www/html;
  • index属性
    作用:定义响应请求后返回的文件名称或格式
    表现形式: index index.html index.htm index.nginx-debian.html;
  • return属性
    作用:定义响应请求后返回的http状态码
    表现形式: return 400;

location 临时跳转

location = /test/ {
    return 302 http://sswang.com/;          # 访问旧url的时候,临时跳转到新url,两个url均不失效 
}

location 访问控制

location /nginx-status {
    stub_status on;                         # 开启nginx的状态页面,返回nginx状态信息,默认关闭
    allow 192.168.1.11;                     # 指定ip客户端允许的访问(ip白名单)
    deny all;                               # 除了允许都拒绝
}

location 目录列表

# 目录下载控制
location /upload {
    alias   /etc/nginx;     # 指定查看文件列表路径(绝对路径)
    autoindex on;                   # 开启目录自动索引
    autoindex_exact_size off;       # 默认on,显示文件确切大小(bytes)。off表示显示文件的大概大小(kB/MB/...)
    autoindex_localtime on;         # 默认off,显示的文件时间为GMT时间。on表示显示文件的服务器时间
}
注意:
    该alias指定的目录下,不允许出现index属性指定的文件。
root 和 alias 区别

一般情况下,在location /中配置root,在location /other中配置alias

root    表示 location 匹配内容的相对路径
alias   表示 一个绝对路径,而且必须以"/"结尾
  • root
    访问http://localhost/img/,nginx找/var/www/image/img/目录下的文件
location /img/ {                            
    root /var/www/image/;                
}      
  • alias
    访问http://localhost/img/,nginx找/var/www/image/目录下的文件
location /img/ {                            
    alias /var/www/image/;                
}                                        
try_files 和return的使用和区别

都是结果状态返回,但他们有 不同的使用场景,try_files对根路径 /匹配无效

  • try_files
    location /a {
        try_files $uri $uri/ =400;
    }
  • try_files和@使用
    # try_files配合@使用
    location /a {
        try_files $uri $uri/ @test;
    }
    location @test {
        return https://www.baidu.com;
    }
        try_files配合@使用
  • return
    location / {
        return 302 https://www.baidu.com;
    }   

以上是关于Nginx常用配置的主要内容,如果未能解决你的问题,请参考以下文章

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段

nginx实战操作(常用命令及配置)

配置 VScode 编辑器 (前端篇)

Nginx 常用配置清单

Nginx配置文件详细介绍

Nginx 常用配置清单