Nginx反向代理
两种代理模式
正向代理
架设在客户机与目标主机之间,代理内部网络对Internet进行访问。
客户机必须配置指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,由代理服务器代替我们去访问。
比如使用VPN访问谷歌,我们需要在电脑上(即客户机)配置FQ软件,或者在ie浏览器上指定代理服务器Ip地址,将发往谷歌的连接请求发往代理服务器,由代理服务器代替我们去访问谷歌再向我们返回响应数据。
反向代理
架设在服务器端,将客户机请求转发给内部网络上的目标服务器(通常会有多台服务器,具体是哪一台这个查找工作由代理服务器来完成),并将从服务器上得到的结果返回给请求连接的客户端。代理服务器还能通过缓存经常被请求的页面来缓解服务器的工作量。
无需在客户机上做任何配置,对外暴露的是代理服务器,由代理服务器访问真实服务器,降低了暴露真实服务器的风险,而客户机以为请求直接发往的是真实服务器。
例如我们访问淘宝,仅仅打开浏览器输入地址即可,这时请求数据包会发往代理服务器,代理服务器再帮助我们去请求最近的目标服务器,最后再将结果返回给我们。
反向代理案例
案例1要求:
我有两台服务器,一台Nginx反向代理服务器10.154.0.111,一台tomcat服务器10.154.0.112,参考资料:tomcat安装
访问http://10.154.0.111:80就会去跳转到http://10.154.0.112:8080页面上去。
编辑nginx.conf配置文件如下
$ vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
default_type text/html;
location / {
root html;
#设置代理跳转到tomcat服务器
proxy_pass http://10.154.0.112:8080;
index index.html index.htm;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#加载配置文件
$ ningix -s reload
使用浏览器访问
注意事项
最好先在服务器上使用curl验证一下,确定访问没有问题。
$ curl http://10.154.0.111
$ curl http://10.154.0.112:8080
如果配置正确,但是还是访问不了,可能是之前浏览器有缓存,可以使用ctrl+f5刷新。我建议是使用无痕浏览模式访问。
案例2要求:
访问代理服务器的不同路径跳转到真实服务器的不同端口上去
访问代理服务器http://10.154.0.111:9001/edu/ 跳转到真实服务器10.154.0.112:8080
访问代理服务器http://10.154.0.111:9001/vod/ 跳转到真实服务器10.154.0.112:8081
配置tomcat服务器
tomcat服务器ip为10.154.0.112
上一个案例已经配置了8080端口的tomcat服务器,我们拷贝tomcat目录,重新编辑配置文件更改端口
$ cp -r tomcat9_8080 tomcat9_8081
#编辑tomcat9_8081的配置文件,使其端口改为8081
$ vim /usr/local/tomcat9_8081/conf/server.xml
注意需要修改两处地方,一处为SHUTDOWN,要与8080的服务器的SHUTDOWN端口不一致即可
这一处修改服务器的访问端口
创建edu跟vod目录以及index.html文件
#在tomcat8080服务器上创建edu目录跟index.html文件
$ cd /usr/local/tomcat9_8080/webapps/
$ mkdir edu
$ echo 'This is 8080 server!' > index.html
#重启tomcat服务
$ cd /usr/local/tomcat9_8080/bin
$ ./shutdown.sh
$ ./startup.sh
#在tomcat8081服务器上创建vod目录跟index.html文件
$ cd /usr/local/tomcat9_8081/webapps/
$ mkdir vod
$ echo 'This is 8081 server!' > index.html
#重启tomcat服务
$ cd /usr/local/tomcat9_8081/bin
$ ./shutdown.sh
$ ./startup.sh
编辑Nginx代理服务器配置文件
$ vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
#配置代理服务器监听端口9001
listen 9001;
server_name localhost;
default_type text/html;
#配置访问路径,访问http://代理服务器:9001/edu就会访问到http://真实服务器:8080/edu
location ~ /edu {
root html;
proxy_pass http://10.154.0.112:8080;
index index.html index.htm;
}
location ~ /vod {
root html;
proxy_pass http://10.154.0.112:8081;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
#重新加载配置文件
$ nginx -s reload
使用浏览器访问
学习来自:YSOcean大佬博客,M俊大佬博客,B站教程1,b站教程2
其他参考资料:菜鸟教程