conf文件
详解
配置文件
主配置文件:/etc/nginx/nginx.conf (yum安装为例)
主要三个模块: 全局块、events块、http块
log_format:
log_format格式变量:
$remote_addr #记录访问网站的客户端地址
$remote_user #远程客户端用户名
$time_local #记录访问时间与时区
$request #用户的http请求起始行信息
$status #http状态码,记录请求返回的状态码,例如:200、301、404等
$body_bytes_sent #服务器发送给客户端的响应body字节数
$http_referer #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。
$http_user_agent #记录客户端访问信息,例如:浏览器、手机客户端等
$http_x_forwarded_for #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置
location 优先级匹配:
~ 波浪线表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ 表示普通字符匹配,不是正则匹配。如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= 进行普通字符精确匹配
@ 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
优先级:
1.等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
2.^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
3.正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则优先匹配同一个server中,配置在前面的location
4.常规字符串匹配类型。按前缀匹配
负载均衡:upstream
分配算法: 轮询(默认)、weight 加权、ip_hash、 url_hash、fair
backup down
X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,剩下的就是曾经经过的代理或负载均衡的ip地址,经过几个就会出现几个
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
$proxy_add_x_forwarded_for变量包含客户端请求头中的"X-Forwarded-For",与$remote_addr用逗号分开,如果没有"X-Forwarded-For" 请求头,则$proxy_add_x_forwarded_for等于$remote_addr。$remote_addr变量的值是客户端的IP。
X-Forwarded-For头域是为了说明请求经过了哪些服务器。
如果请求中不包含X-Forwarded-For头域,则设置X-Forwarded-For头域值为请求发送者的IP;
如果请求中包含X-Forwarded-For头域,则设置X-Forwarded-For头域值为之前该头域的值后面添加请求发送者的IP,用逗号分隔。
client-->proxy1-->proxy2--->proxy3--server
那server拿到的x-forward-for 是这样的:X-Forwarded-For: client, proxy1, proxy2
在proxy1的时候 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for 这个时候会找x-forward-for 没有的话,就会把remote_addr赋給它,到达proxy2的时候又找x-forward-for 有的话就会把remote_addr添加进去。
修改端口修改首页
server {
listen 8080 default_server;
listen [ ::] :8080 default_server;
server_name sc.test.com;
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
index test.html;
}