我是靠谱客的博主 感动钢铁侠,最近开发中收集的这篇文章主要介绍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_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反向代理笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部