概述
课前回顾
mysqladmin -uroot password 1#给root用户密码(必须要做)
mysql -uroot -p1
create database wp;#创建数据库
create database zh;
show databases;
grant all on *.* to php_user@'%' identified by '1';#创建通用的用户
show tables from zh;#查看数据库里面的内容
select user,host from mysql.user;#查看mysql数据库的用户
#数据库
默认就有一个root用户,相当于linux的root用户,不过数据库的root用户不使用密码就可以登录
集群中有不同的用户,不同的用户的作用不同,linux用户,PHP用户,wp用户,匿名用户或者虚拟用户,
数据库的用户
数据库(某某库)
user表有数据库用户,只有记录在册的用户才能登录数据库
xx表,下面有文件
xxx表
*.*库.表 ,所有库.所有表
用户跟表毫无关系
wordpress图形化填写注册内容,系统生成.php文件记录,连接数据库存储
WordPress创建用户,写的文章,都记录在相应的表里(图片存在nfs)
ip访问网站,哪个.conf在上面,就访问哪个.conf
nginx日志里面,分隔符随意,不需要转义,引号外面的打印出字符串,里面的先执行,因为 ''
proxy代理
set设置
host
$host域名
nginx反向代理的location模块
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。
知乎上传的图片在uploads里,上传后会改名,不能使用find查找,WordPress用户上传图片之后,图片不会改名可以使用 grep -r *.png /wp 找到指定的图片
不能通过修改域名或者端口的方式来连接nginx搭载的WordPress网站,因为原来的域名已经在WordPress的设置里面记录,修改端口或者域名后,都不能连接WordPress,这样,浏览器输入域名后访问,就会直接访问第一个location(这个时候域名=IP)(#当域名指定的location不能访问,nginx就会直接去访问第一个location指定的站点目录下默认的文件,显示出内容,或者下载)
除非在WordPress里面做出对应的修改
鲨鱼可以监听vmnet8这块网卡,但是不能监听lan区段内所有主机(可以理解为是不同的网卡)
统一区域网下域名可以重复,IP不能重复
什么是代理
代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。
刚开始的时候,代理多数是帮助内网client访问外网server用的
后来出现了反向代理,"反向"这个词在这儿的意思其实是指方向相反,即代理将来自外网客户端的请求转发到内网服务器,从外到内
正向代理
正向代理类似一个跳板机,代理访问外部资源
比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了
正向代理的用途:
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
什么是反向代理?
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
反向代理的好处
1、保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了web服务器的资源安全。
2、反向代理为基础产生了动静资源分离以及负载均衡的方式,减轻web服务器的负担,加速了对网站访问速度(动静资源分离和负载均衡)
3、节约了有限的IP地址资源,企业内所有的网站共享一个在internet中注册的IP地址(公网IP),这些服务器分配私有地址,采用虚拟主机的方式对外提供服务
**正向代理和反向代理(需要)的区别 **
1.区别在于形式上服务的”对象”不一样
2.正向代理代理的对象是客户端,为客户端服务
3.反向代理代理的对象是服务端,为服务端服务
fastcgi代理模块也是一种反向代理,代理的是PHP(服务端),nginx连接PHP,那么nginx就是一个客户端,用户通过浏览器访问nginx,那么用户就是客户端
nginx模块和代理服务
[
nginx反向代理模块
ngx_http_proxy_module
[root@lb01 conf.d]# vim proxy.conf
server {
listen 80;
server_name b.zls.com;
location / {
proxy_pass http://172.16.1.7:80;
}
}
#浏览器中指定的IP(解析后),访问代理机,代理机带着指定的IP去访问代理服务器
这样返回的页面是第一个.conf中location / 中的默认页面,当然也可能返回404
server {
listen 80;
server_name b.zls.com;
location / {
proxy_pass http://172.16.1.7:80;
proxy_set_header Host $host;
}
}
#浏览器中指定的IP(解析后),访问代理机,代理机带着指定的域名(用户在浏览器中输入的IP)去访问代理服务器,返回指定的location中的内容
nginx日志打印客户端真实IP
使用proxy代理模块打印remote_addr(只记录上一级IP)
log_format main 'lbIP$remote_addr - 用户$remote_user 本地时间[$time_local] "请求的方法和协议$request" '
'状态码$status 响应字节数$body_bytes_sent "从哪来$http_referer" '
'"浏览器配置$http_user_agent" --- "$http_x_real_ip"';
server {
listen 80;
server_name cs.ip.com;
location / {
proxy_pass http://10.0.0.7:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
#浏览器中指定的IP(解析后),访问代理机,代理机带着指定的域名(用户在浏览器中输入的IP)去访问代理服务器,返回指定的location中的内容,这样web服务器的日志只会记录上一级的代理的IP,不方便数据的分析
使用proxy代理模块打印http_x_forwarded_for(所有层级IP)
#服务端(web)
1.修改日志格式
nginx日志里面的分隔符随意,目的是区分输出的空格和原有的空格,| · ` `(特殊符号)不需要转义
#日志格式(log_format main)
log_format main 'lbIP$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;
$remote_addr #客户端访问网站之前使用的cdn(代理)的IP地址(或者服务端lb网关IP 或者自己网关的IP)(可以拼凑)
$http_x_forwarded_for #记录源客户端IP地址(记录从浏览器到web服务器这个过程的所有的IP,客户端的,代理机的,配合$http_x_real_ip $http_x_forwarded_for才能生效)
2.重载nginx配置文件
nginx -sreload
#代理机(外网IP)
server {
listen 80;
server_name cs.ip.com;
location / {
# 代理后端的机器(代理机或者代理服务器)
proxy_pass http://10.0.0.7:80;
# 客户端的请求头部信息,带着域名来找我,我也带着域名去找下一级(代理机或者代理服务器)
proxy_set_header Host $host;
# 显示客户端的真实ip(和代理的所有IP)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#浏览器中指定的IP(解析后),访问代理机,代理机带着指定的域名(用户在浏览器中输入的IP)去访问代理服务器,返回指定的location中的内容,这样web服务器的日志记录所有层级的代理的IP和客户端的IP
总结
nginx服务器多重代理,代理机域名必须要相同
$remote_addr日志中(头部)使用这个变量可以看到上一级的IP(只能看到上一级)
$proxy_add_x_forwarded_for日志中(尾部)使用这个变量可以看到所有代理还有客户端的IP(从前2级代理开始显示)
nginx反向代理,代理机代理谁 谁就是服务端
使用浏览器访问nginx多重代理使用的域名,和使用linux主机访问域名的结果不完全相同
nginx服务端(web)可以通过配置不同域名的方式来指定提供不同的服务
nginx日志中(尾部)添加"$http_x_real_ip",这样nginx日志才会显示尾部的IP
nginx日志中(头部)添加$remote_addr,那么就可以通过日志中的头部IP判断出上一级的IP
nginx日志中(尾部)添加"$http_x_forwarded_for",那么就可以通过nginx日志中头部和尾部,判断出nginx所有代理和nginx客户端的真实IP(nginx日志中不添加"$http_x_real_ip",server中的$proxy_add_x_forwarded_for也能打印出所有代理和客户端的IP)
作业:
1.web01 web02 集群,共享数据库 共享nfs 详细步骤,总结一个文档
2.代理,总结一个文档,做多级代理,查看xforwardfor日志
最后
以上就是感动钢铁侠为你收集整理的nginx反向代理打印日志_nginx反向代理笔记的全部内容,希望文章能够帮你解决nginx反向代理打印日志_nginx反向代理笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复