nginx的高级网络配置(realip的获取,image模块和https模块)

一、获取被反向代理访问的客户端真实ip

1.环境准备

server1:nginx真实web服务器
server2:nginx反向代理服务器

这句话的含义是:当nginx当作真实web服务器时,客户端访问的是反向代理服务器server2,反向代理服务器再访问web服务器,
那么web服务器上应该就只能获取到反向代理服务器server2的地址,现在要在日志的连接请求中看到客户端的真实ip
在这里插入图片描述

vim /usr/local/nginx/conf/nginx.conf
日志格式的含义解释:(后面会用到)

$remote_addr:远程IP;
$remote_user:远程用户;
$stime_local:时间;
$request:用来记录请求的url与http协议;
$status:用来记录请求状态;成功是200;
$body_bytes_sent:记录发送给客户端文件主体内容大小;
$http_referer:用来记录从那个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
$http_x_forwarded_for:访问用户的真实 IP 地址;
2.先在server1上创建一个虚拟主机测试语法
vim /usr/local/nginx/conf/nginx.conf		##修改配置文件
curl -H "X-Forwarded-For: 2.2.2.2,172.25.21.1" server1.example.com		##它应该获取到的时2.2.2.2

修改完成后发现无法重新加载,查看报错是因为无法时别real_ip指令,所以我们需要重新编译并加上这个模块
注意:编译时的安装位置和上次添加的模块必须相同,如果忘记了可以用/usr/local/nginx/sbin/nginx -V 查看编译的详细信息
./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module
make
[root@server1 nginx-1.17.1]# cp ./objs/nginx /usr/local/nginx/sbin/nginx -f
/usr/local/nginx/sbin/nginx -t
systemctl reload nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.用两台主机实现realip的获取

(1)server1真实nginx服务器的设定:(在进行一个新实验时,把上次的内容可以注释掉)

vim /usr/local/nginx/conf/nginx.conf			##修改配置文件
systemctl reload nginx
scp -r /usr/local/nginx/ server2:/usr/local/	##把nginx目录直接发给server2使用,减少操作步骤

在这里插入图片描述
(2)server2反向代理nginx服务器的设定:(把server1的修改全部注释掉)

vim /usr/local/nginx/conf/nginx.conf		##修改配置文件
/usr/local/nginx/sbin/nginx					##启动服务    		

在这里插入图片描述
在这里插入图片描述
(3)测试:(在真机测试)

vim /etc/hosts						##先添加域名解析
172.25.21.2				www.example.com
curl -I www.example.com				##访问域名,查看server1的access日志

tail -f /usr/local/nginx/logs/access.log	##查看server1的日志可以看到获取到了真机的ip地址

在这里插入图片描述
在这里插入图片描述

二、image模块

1.模块的编译安装和导入
/usr/local/nginx/sbin/nginx -V				##在重新编译之前确定自己现在的环境和添加的模块
./configure --help | grep image				##查找image模块
[root@server1 nginx-1.17.1]# ./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module
--with-http_image_filter_module=dynamic			##添加的模块和安装的位置必须和之前的环境相同
##执行完编译命令后很可能会报错,缺少编译环境

在这里插入图片描述

下载并安装这个GD编译环境,重新编译,自身yum源没有,需要从网上下载,且版本应与nginx编译的版本相同
本机使用的是:gd-devel-2.0.35-26.el7.x86_64.rpm
yum install gd-devel-2.0.35-26.el7.x86_64.rpm -y		##安装编译环境
[root@server1 nginx-1.17.1]# ./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module
 --with-http_image_filter_module=dynamic				##再次执行编译脚本
make													##编译生成二进制文件
cp -f ./objs/nginx /usr/local/nginx/sbin/nginx			##覆盖旧的二进制文件
cd ./objs						##进入后ls查看安装的image模块

mkdir /usr/local/nginx/modules				##因为这不是内置的模块,所以要导入使用,创建一个存放这种模块的目录
cp ngx_http_image_filter_module.so /usr/local/nginx/modules/		##把模块复制过去

在这里插入图片描述

2.模块的使用:
修改配置文件将模块导入使用:
vim /usr/local/nginx/conf/nginx.conf		##修改配置文件,
systemctl reload nginx						##本次演示的是像素的修改方法,若想知道更多应用请查看官网的帮助手册

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、https模块

1.模块的编译安装和导入(与image模块类似)
/usr/local/nginx/sbin/nginx -V			##首先查看已经编译安装的模块和位置
./configure --help | grep ssl			##查找https模块
[root@server1 nginx-1.17.1]# ./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module
 --with-http_image_filter_module=dynamic --with-http_ssl_module			##编译安装
make									##生成二进制文件
cp -f ./objs/nginx /usr/local/nginx/sbin/nginx		##覆盖旧的二进制文件
systemctl reload nginx					##重新加载服务
cp ./objs/ngx_http_image_filter_module.so /usr/local/nginx/modules/		##原来的模块在编译后已经不能用了,所以把新的
																		##再次导入
systemctl reload nginx			  	##使策略服务		
2.模块的使用:

(1)虚拟主机的建立和证书的生成

vim /usr/local/nginx/conf/nginx.conf		##修改配置文件,创建一个虚拟主机用来https的访问
cd /etc/pki/tls/certs/						##进入证书目录
ls											##可以看到现在还没有证书模块
make cert.pem						##生成证书,按要求填写信息即可,也可以参照我之前apache那篇博客设置cert和key

在这里插入图片描述
在这里插入图片描述

cp cert.pem /usr/local/nginx/conf/				##将证书复制到nginx配置文件目录下
mkdir /web										##建立https的默认发布目录
vim /web/index.html								##编写一个默认发布文件
systemctl reload nginx							##重新加载服务

在这里插入图片描述
(2)在浏览器进行测试:

在浏览器访问https://172.25.21.1/,查看是否可以访问

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值