反向代理
准备:
反向代理的实现要准备两台虚拟机,一台模拟真实服务器,一台作为代理服务器,在这两台虚拟机都安装nginx,详见nginx——版本的热省级和版本回退中的安装配置,两台虚拟机安装的参数一样。
主机ip:
server1: 172.25.62.1(真实服务器)
server2: 172.25.62.2(代理服务器)
步骤:
1.在真实服务器server1上进行配置
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
41 set_real_ip_from 172.25.62.2;##代理主机的ip地址42 real_ip_header X-Forwarded-For;##获得客户端访问代理的请求报文头获得真实IP43 real_ip_recursive on;##打开获取功能
在server中添加real_ip等参数,这样,真实服务器的配置就完成了。
[root@server1 ~]# /usr/local/nginx/sbin/nginx -t[root@server1 ~]# /usr/local/nginx/sbin/nginx
打开nginx服务。
2.修改代理主机server2的配置
[root@server2 nginx-1.16.0]# vim /usr/local/nginx/conf/nginx.conf
upstream redhat {server 172.25.62.1:80;##真实主机的ip}
在http中添加
118server {119 listen 80;120 server_name ;##设置访问域名,直接访问这个域名访问到的是server2主机。121 122 location / {123 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;124 proxy_pass http://redhat;##这里定义的名字要和上面配置设置的相符。125 }126 }
添加虚拟主机,之后我们要实现的效果是,访问,可以访问到主机server1。
[root@server2 nginx-1.16.0]# /usr/local/nginx/sbin/nginx -t[root@server2 nginx-1.16.0]# /usr/local/nginx/sbin/nginx
同样的,打开服务就可以了
3.在两台主机的发布目录上编写测试页
如在server1:
vim /usr/local/nginx/html/index.html
里面的内容为方便测试,我就写的server1,在server2,就填server2,这样在测试时就可以准确判断访问的到底是哪台主机。
测试:
使用客户主机进行测试,测试时要先添加一下域名解析,因为我们要使用域名进行访问。
[root@foundation62 ~]# vim /etc/hosts
访问:
反向代理成功。
nginx的https加密
1.修改配置文件
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf
108server {109 listen 443 ssl;110 server_name ;##设置访问的域名111 112 ssl_certificatecert.pem;113 ssl_certificate_key cert.pem;114 115 ssl_session_cache shared:SSL:1m;116 ssl_session_timeout 5m;117 118 ssl_ciphers HIGH:!aNULL:!MD5;119 ssl_prefer_server_ciphers on;120 121 location / {122 root /web;##设置发布目录123 index index.html index.htm;124 }125}
打开nginx的加密功能
2.创建发布目录,编写发布页
[root@server1 conf]# mkdir /web[root@server1 conf]# vim /web/index.html
3.生成加密证书
首先进入要生成证书的目录
[root@server1 conf]# cd /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem
生成加密证书
生成加密证书,生成过程中要填写一些信息。
生成证书cert.pem。
之后再将将生成的证书cert.pem复制到/usr/local/nginx/conf/目录就可以了
最后重新加载配置。
测试:
首先,要在做本地解析
在浏览器输入进行测试
选择证书就可以进入页面,这样就完成了加密。
nginx的域名重定向
1.临时重定向
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf
108server {109 listen 443 ssl;110 server_name localhost;111 112 ssl_certificatecert.pem;113 ssl_certificate_key cert.pem;114 115 ssl_session_cache shared:SSL:1m;116 ssl_session_timeout 5m;117 118 ssl_ciphers HIGH:!aNULL:!MD5;119 ssl_prefer_server_ciphers on;120 121 location / {122 root /web;123 index index.html index.htm;124 }125}126server{127 listen 80;128 server_name ;129 rewrite ^/(.*)$ /$1;130}
测试:
输入会自动定向到,302表示临时重定向
2.永久重定向
和临时重定向不同的是,永久重定向只是在rewrite后面加了一个permanent参数
测试:
301表示永久重定向。
不同域名的重定向
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf
126server{127 listen 80;128 server_name ;129 root /bbs;130 rewrite ^/bbs$ /index.html permanent;131}
修改配置文件。
[root@server1 conf]# mkdir /bbs[root@server1 conf]# vim /bbs/index.html
创建发布目录,编写测试页。
[root@server1 conf]# /usr/local/nginx/sbin/nginx -s reload
重新加载配置。
之后在浏览器输入/bbs,可以定向到。
在进行测试时要注意是否添加了本地解析。