1.获取被反向代理访问的客户端真实ip
1.在server1上创建一个虚拟主机测试语法
vim /usr/local/nginx/conf/nginx.conf ##修改配置文件
curl -H "X-Forwarded-For: 2.2.2.2,172.25.16.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
测试:
2.用两台主机实现realip的获取
1.server1(注释掉上个实验的内容)
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 ##启动服务
测试:
在物理机:
vim /etc/hosts ##先添加域名解析
curl -I www.example.com ##访问域名,查看server1的access日志
tail -f /usr/local/nginx/logs/access.log ##查看server1的日志可以看到获取到了真机的ip地址
2.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 ##添加的模块和安装的位置必须和之前的环境相同
##执行完编译命令后很可能会报错,缺少编译环境
2.安装编译环境
下载并安装这个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/ ##把模块复制过去
继续编译
安装
使模块生效
3.编辑配置文件
修改配置文件将模块导入使用:
vim /usr/local/nginx/conf/nginx.conf ##修改配置文件,
systemctl reload nginx ##本次演示的是像素的修改方法,若想知道更多应用请查看官网的帮助手册
未使用image模块前
使用后
3.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.建立虚拟主机,生成证书
vim /usr/local/nginx/conf/nginx.conf ##修改配置文件,创建一个虚拟主机用来https的访问
cd /etc/pki/tls/certs/ ##进入证书目录
ls ##可以看到现在还没有证书模块
make cert.pem ##生成证书
测试: