目录
- 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;
}
}
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;
}
}
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;
}
}
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;