Nginx —— 基本配置及其详解

持续更新中…

一、日志相关

1.1、配置项详解

  • 可以通过以下参数来自定义日志文件的位置、输出格式等:
    log_format: 定义日志文件的输出格式,支持多个自定义字段。
    access_log:配置访问日志的输出路径。这里可以使用 Nginx 内置变量来组合自定义日志格式。
    error_log:指定针对特定位置或方法的错误级别以及需要记录的错误消息的类型。

  • 一些常用的 Nginx 日志格式变量:
    $remote_addr: 客户端 IP 地址。
    $remote_user: 客户端用户名称(仅限于 HTTP 基本身份验证)。
    $time_local: 记录时间,通常以标准时间格式为 “%d/%b/%Y:%H:%M:%S %z”。
    $request: 客户端发送的原始请求行 (比如 “GET /index.html HTTP/1.1”) 。
    $status: HTTP 响应代码 (200, 404 等)。
    $body_bytes_sent: 发送到客户端的字节数。
    $http_referer: 来源 URL。
    $http_user_agent: 使用浏览器标识符来标识请求的客户端。

  • 配置字段中出现的含义:
    proxy_pass <url>:将请求转发给一个后端服务器地址(包括协议、IP 和端口号)。
    access_log [path] [format]}:允许配置服务器访问日志。可以指定一个路径,或将其设置为 off 以禁用记录该请求的日志。
    error_log [path] [level]:开启的错误级别和设置错误消息的输出位置。

  • 在配置中,你还可以结合使用以下子标识符:
    json_escape($some_json_property): 使用 escape() 的形式转义 JSON 字符串。这对于记录 JSON 数据非常有用。
    $upstream_addr$upstream_response_time:对于支持代理连接的 Nginx 前端,显示代理服务器的IP和代理总时间 (upstream_response_time)。

1.2、配置示例

http{
    ...
    # 设置日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
	
    # 记录访问日志
    access_log  /var/log/nginx/access.log  main;
    
    # 记录后端重定向和代理相关的错误 (4xx/5xx)
    error_log   /var/log/nginx/error.log  warn;

    server {
        ...
        location / {
            proxy_pass http://xxxxxx;

            # 启用日志
            access_log /var/log/nginx/x-access.log;
            error_log /var/log/nginx/x-error.log;

            # 配置日志格式
            log_format proxylog '{"@timestamp":"$time_iso8601","client_ip":'
                                     '"$realip_remote_addr",'
                                     '"upstream_addr":"$upstream_addr",'
                                     '"host":"$http_host",'
                                     '"req_uri":"$request_uri",'
                                     '"status":$status,'
                                     '"bytes_sent":$bytes_sent,'
                                     '"referer":"$http_referer",'
                                     '"user_agent":"$http_user_agent",'
                                     '"request_time":$request_time,'
                                     '"upstream_connect_time":"$upstream_connect_time",'
                                     '"upstream_header_time":"$upstream_header_time",'
                                     '"upstream_response_time":"$upstream_response_time"}';

            # 定义日志输出
            access_log /var/log/nginx/x-access.log proxylog;
        }
    }
}

单个请求配置日志,其他默认

所有经过此 location 转发到 http://xxx.xxx.xxx 的请求和响应,将会被记录到 /var/log/nginx/upstream.log 日志文件中,并按照自定义格式“upstreamlog”记录。

http {
    ...
    # 定义一个名为“upstreamlog”的自定义日志格式
    log_format upstreamlog '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" '
        'upstream:"$upstream_addr" response_time:$upstream_response_time '
        'request_time:$request_time';
    

	location / {
    	proxy_pass http://xxx.xxx.xxx;
    	access_log /var/log/nginx/upstream.log upstreamlog;
	}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用Nginx作为反向代理服务器时,可以通过配置实现灵活的代理规则和负载均衡。下面是一个全面详解nginx反向代理配置介绍: 1. 配置反向代理服务器: 在Nginx配置文件中,使用`server`块来定义反向代理服务器。例如: ``` server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; } } ``` 上述配置将会将所有请求转发到名为`backend_server`的后端服务器。 2. 配置负载均衡: Nginx可以通过多种算法实现负载均衡,如轮询、IP哈希、最少连接等。例如,使用轮询算法的配置如下: ``` upstream backend_server { server backend1.example.com; server backend2.example.com; server backend3.example.com; } ``` 上述配置将会将请求按照轮询的方式分发到后端服务器。 3. 配置缓存: Nginx可以作为缓存服务器,缓存静态资源以提高性能。例如,可以使用以下配置启用缓存: ``` location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_valid 200 1d; } ``` 上述配置将会将后端服务器的响应缓存到名为`my_cache`的缓存中,并设置缓存有效期为1天。 4. 配置SSL/TLS: Nginx可以作为SSL/TLS终端,提供安全的HTTPS连接。例如,可以使用以下配置启用SSL/TLS: ``` server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location / { proxy_pass http://backend_server; } } ``` 上述配置将会将HTTPS请求转发到后端服务器,并使用指定的SSL证书和私钥进行加密。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值