nginx反向代理打印⽇志_nginx反向代理笔记课前回顾
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_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]# f
server {
listen 80;
server_name b.zls;
location / {
}
}
#浏览器中指定的IP(解析后),访问代理机,代理机带着指定的IP去访问代理服务器
这样返回的页⾯是第⼀个.conf中location / 中的默认页⾯,当然也可能返回404
server {
listen 80;
server_name b.zls;
location / {
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;
location / {
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" 'nginx和网关怎么配合使用
'状态码$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;
location / {
# 代理后端的机器(代理机或者代理服务器)
# 客户端的请求头部信息,带着域名来我,我也带着域名去下⼀级(代理机或者代理服务器)
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⽇志

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。