反向代理
准备:
反向代理的实现要准备两台虚拟机,一台模拟真实服务器,一台作为代理服务器,在这两台虚拟机都安装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; ##获得客户端访问代理的请求报文头获得真实IP
43 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中添加
118 server {
119 listen 80;
120 server_name www.redhat.org; ##设置访问域名,直接访问这个域名访问到的是server2主机。
121
122 location / {
123 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
124 proxy_pass http://redhat; ##这里定义的名字要和上面配置设置的相符。
125 }
126 }
添加虚拟主机,之后我们要实现的效果是,访问www.redhat.org,可以访问到主机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,这样在测试时就可以准确判断访问的到底是哪台主机。
测试:
使用客户主机进行测试,测试时要先添加一下域名解析,因为我们要使用域名www.redhat.org进行访问。
[root@foundation62 ~]# vim /etc/hosts
访问:
反向代理成功。
nginx的https加密
1.修改配置文件
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf
108 server {
109 listen 443 ssl;
110 server_name www.redhat.org; ##设置访问的域名
111
112 ssl_certificate cert.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/目录就可以了
最后重新加载配置。
测试:
首先,要在做本地解析
在浏览器输入https://www.redhat.org进行测试
选择证书就可以进入页面,这样就完成了加密。
nginx的域名重定向
1.临时重定向
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf
108 server {
109 listen 443 ssl;
110 server_name localhost;
111
112 ssl_certificate cert.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 }
126 server{
127 listen 80;
128 server_name www.redhat.org;
129 rewrite ^/(.*)$ https://www.redhat.org/$1;
130 }
测试:
输入www.redhat.org会自动定向到https://www.redhat.org,302表示临时重定向
2.永久重定向
和临时重定向不同的是,永久重定向只是在rewrite后面加了一个permanent参数
测试:
301表示永久重定向。
不同域名的重定向
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf
126 server{
127 listen 80;
128 server_name www.redhat.org bbs.redhat.org;
129 root /bbs;
130 rewrite ^/bbs$ https://bbs.redhat.org/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
重新加载配置。
之后在浏览器输入www.redhat.org/bbs,可以定向到https://bbs.redhat.org。
在进行测试时要注意是否添加了本地解析。