Nginx虚拟主机和日志详解

目录

  • 1.Nginx虚拟主机
    • 1.1基于IP虚拟主机
    • 1.2基于端口虚拟主机
    • 1.3基于域名实现的虚拟主机
  • 2.日志详解

1.Nginx虚拟主机

虚拟主机,Nginx配置中的多个server{}区域对应不同的业务(站点)

虚拟主机方式
基于域名的虚拟主机 不同的域名访问不同的站点
基于IP的虚拟主机 不同的IP地址可以访问不同的站点
基于端口的虚拟主机 不同的端口可以访问不同的站点 用于隐藏重要的路径或业务

1.1基于IP虚拟主机

[root@docker conf.d]# head *conf
==> www.ceshi.com.conf <==
server {
   listen  172.21.221.195 80;
   location / {
   root /code/ceshi;
   index index.html;
        }
}

==> www.test.com.conf <==
server {
   listen  172.21.221.194 80;
   location / {
   root /code/test;
   index index.html;
        }
}

Nginx虚拟主机和日志详解_第1张图片

1.2基于端口虚拟主机

==> www.ceshi.com.conf <==
server {
   listen  80;
   server_name 172.21.221.194;
   location / {
   root /code/ceshi;
   index index.html;
        }
}

==> www.test.com.conf <==
server {
   listen   81;
   server_name  172.21.221.194;
   location / {
   root /code/test;
   index index.html;
        }
}

Nginx虚拟主机和日志详解_第2张图片
Nginx虚拟主机和日志详解_第3张图片

1.3基于域名实现的虚拟主机

==> www.ceshi.com.conf <==
server {
   listen  80;
   server_name www.ceshi.com;
   location / {
   root /code/ceshi;
   index index.html;
        }
}

==> www.test.com.conf <==
server {
   listen   81;
   server_name  www.test.com;
   location / {
   root /code/test;
   index index.html;
        }
}

Nginx虚拟主机和日志详解_第4张图片
Nginx虚拟主机和日志详解_第5张图片

2.日志详解

  • 访问日志 /var/log/nginx/access.log
  • 错误日志 /var/log/nginx/error.log

默认的日志格式:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                   

125.36.117.255 - - [09/Aug/2023:23:22:34 +0800] “GET /favicon.ico HTTP/1.1” 404 555 “http://www.ceshi1.com/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183” “-”

变量 含义
$remote_addr 记录了客户端的IP地址
$remote_user 当nginx开启了用户认证功能后,此变量记录了客户端使用了哪个用户进行了认证
$time_local 记录了当前日志条目的时间
$request 记录了当前http请求的方法、url和http协议版本
$status 记录了当前http请求的响应状态,即响应的状态码,比如200、404等响应码,都记录在此变量中
$body_bytes_sent 记录了nginx响应客户端请求时,发送到客户端的字节数,不包含响应头的大小
$http_referer 记录了当前请求是从哪个页面过来的,比如你点了A页面中的超链接才产生了这个请求,那么此变量中就记录了A页面的url(访问域名)
$http_user_agent 记录了客户端的软件信息,比如,浏览器的名称和版本号
$http_x_forwarded_for 真实客户端IP

nginx日志的json格式

 log_format json '{"@timestamp":"$time_iso8601",'
                  '"host":"$server_addr",'
                  '"service":"nginxTest",'
                  '"trace":"$upstream_http_ctx_transaction_id",'
                  '"log":"log",'
                  '"clientip":"$remote_addr",'
                  '"remote_user":"$remote_user",'
                  '"request":"$request",'
                  '"http_user_agent":"$http_user_agent",'
                  '"size":$body_bytes_sent,'
                  '"responsetime":$request_time,'
                  '"upstreamtime":"$upstream_response_time",'
                  '"upstreamhost":"$upstream_addr",'
                  '"http_host":"$host",'
                  '"url":"$uri",'
                  '"domain":"$host",'
                  '"xff":"$http_x_forwarded_for",'
                  '"referer":"$http_referer",'
                  '"status":"$status"}';
#通过调用相应的模式名即可
accesslog   /var/log/ngin/access.log json;
accesslog   /var/log/nginx/access.log main;

你可能感兴趣的:(Nginx,nginx,运维)