常用的一些Nginx配置

2023-07-01 15:59:37 浏览数 (1)

1、监听端口

代码语言:javascript复制
server {
    # 用于HTTP协议
    listen 80;

    # 用于HTTPS协议
    listen 443 ssl;

    # 用于HTTP2
    listen 443 ssl http2;

    # 使用IPv6监听80端口
    listen [::]:80;

    # 仅使用IPv6
    listen [::]:80 ipv6only=on;
}

2、日志功能

Nginx的日志分为两种:access_log (访问日志)和 error_log(错误日志)。

对于日志的格式,Nginx提供了一种名为 combine 的格式,如果没有明确指定日志格式则默认使用该格式。

如果不使用 combine 格式的话,可以使用 log_format 指令来自定义,其具体用法参考Nginx日志配置详解或者官方文档:HttpLog模块-Nginx中文文档。

2.1、访问日志

访问日志主要记录客户端的请求,客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。

代码语言:javascript复制
server {
    # 访问日志文件的写入位置,相对或绝对路径
    access_log /path/to/file.log;

    # 选择访问日志功能的开启(on)或关闭(off)
    access_log on;
}
2.2、错误日志

错误日志记录服务器和请求处理过程中的错误信息。

代码语言:javascript复制
server{
    # 错误日志的写入位置
    error_log logs/error.log error;
    # 错误日志的级别,分为 debug, info, notice, warn, error, crit, alert,emerg,其取值范围是按紧急程度从低到高排列
    # 只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error
    error_log file [level];
}

3、配置域名

代码语言:javascript复制
server {
    # 监听domain.com
    server_name domain.com;

    # 监听多个域名
    server_name domain.com www.domain.com;

    # 监听所有域名
    server_name *.domain.com;

    # 监听所有顶级域名
    server_name domain.*;

    # 监听未指定的主机名(比如侦听IP地址本身)
    server_name "";  
}

4、静态资源

代码语言:javascript复制
server {
    listen 80;
    server_name domain.com;

    location / {
        # 设置网站的根目录    
        root /path/to/website;
    } 
}

5、重定向

5.1、网站根目录重定向
代码语言:javascript复制
server {
    listen 80;
    server_name www.domain.com;
    # 将 www.domain.com 进行301重定向,跳转至 http://domain.com$request_uri
    return 301 http://domain.com$request_uri;
}
5.2、特定目录重定向
代码语言:javascript复制
server {
    listen 80;
    server_name www.domain.com;

    # 将链接 http://www.domain.com/redirect-url 进行301重定向,跳转到http://otherdomain.com
    location /redirect-url {
        return 301 http://otherdomain.com;
    }
}

如将 domain.com 永久重定向到 www.domain.com:

代码语言:javascript复制
server {
    listen 80;
    server_name domain.com;
    return 301 http://www.$host$request_uri;
}

6、反向代理

反向代理 - 维基百科,自由的百科全书 (wikipedia.org)

Reverse proxy - Wikipedia

代码语言:javascript复制
server {
    listen 80;
    server_name domain.com;

    # 对特定主机的3000端口进行反向代理
    location / {
        proxy_pass http://0.0.0.0:3000;
    }
}

7、负载均衡

负载均衡 - 维基百科,自由的百科全书 (wikipedia.org)

Load balancing (computing) - Wikipedia

代码语言:javascript复制
upstream node_js {
    server 0.0.0.0:3000;
    server 0.0.0.0:4000;
    server 123.131.121.122;
}

server {
    listen 80;
    server_name domain.com;

    location / {  
        proxy_pass http://node_js;
    }
}

8、SSL配置

代码语言:javascript复制
server {
    listen 443 ssl;
    server_name domain.com;

    ssl on;
    # 证书文件,格式不一定都是pem,还可能是其他格式
    ssl_certificate /path/to/cert.pem;
    # 秘钥文件,格式不一定都是pem,还可能是其他格式
    ssl_certificate_key /path/to/privatekey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_timeout 1h;
    ssl_session_cache shared:SSL:50m;
    add_header Strict-Transport-Security max-age=15768000;
}

# 将HTTP永久重定向到HTTPS
server {
    listen 80;
    server_name domain.com;
    return 301 https://$host$request_uri;
}

部分内容转载修改自: Nginx Cheatsheet (hashnode.dev) Nginx日志配置详解_biubiuli的博客-CSDN博客_nginx 日志配置

0 人点赞