nginx 反向代理

         学习日志:最近要求做一个门户,要求一个页面可以选择登陆到不同的工程中,起初想的用接口或者将各个系统的用户表整合实现登陆然后跳转到相应的工程,发现这样很麻烦,需要对各个工程进行改造。后来想如何能解决跨域问题,就可以在一个页面上向各个工程发送请求了,通过查资料找到了nginx能通过反向代理实现跨域问题。

        nginx简介:nginx不但可以反向代理,还可以进行负载均衡处理,还能对静态页面经常缓存等功能。nginx主要是linux版本也有windows版本,linux版本支持连接数比windows多很多。

        nginx操作:首先下载nginx安装,启动nginx服务(linux:service nginx start,windows:dos到安装更目录 输入nginx即可;启动服务后可以查看进程,1个master,3个worker),其他命令(主要是配置文件reload,可以reload文件不需要重启nginx服务,nginx -s reload)

      nginx配置文件:这时windows的目录机构,和linux差不多

最重要的配置文件在conf中的nginx.conf文件(如下),nginx.conf文件一般不用改动。

<pre name="code" class="java">#user  nobody;
worker_processes  1;      //linux有4个,windows只有一个。
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;  //连接数
}
http {
    include       mime.types;   //这个是导入文件,和C++的引入头文件一样
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
     配置反向代理:在nginx的目录下传进配置文件myweb.conf,然后再nginx.conf中http{}尾部引入该文件即可 
http{
       ...
       ...
	include       myweb.conf;
}
   myweb.conf配置文件如下:(一个server表示一个虚拟机,location表示一个反向代理的配置,原理是通过server(虚拟机)截获请求,mapping到相应的location,再把请求转给的真实的服务。)
server {
        listen       8081;      //该虚拟机监听的端口
        server_name  localhost; //监听的ip
        charset      utf8;

        location /webrm {  //localhost:8081/webrm  则请求将转给到该location处理
                proxy_pass          http://172.16.91.15:8081;    //反向代理服务地址			   
                proxy_redirect      off;
		proxy_set_header    Host            $host:8081;  //最好加上和监听端口,因为真实服务返回地址后就会变成80端口,nginx.conf里默认监听80端口
                proxy_set_header    X-Real-IP       $remote_addr;
                proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_http_version  1.1;                        //如何使用反向代理登陆时,出现WebSockets通信时(ws://),这需要加上下面三个参数
                proxy_set_header    Upgrade $http_upgrade;
                proxy_set_header    Connection "upgrade";
          }									
	location /materiel {
                proxy_pass          http://172.16.88.111:8080;			   
                proxy_redirect      off;
		proxy_set_header    Host            $host:8081;
                proxy_set_header    X-Real-IP       $remote_addr;
                proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_http_version  1.1;
                proxy_set_header    Upgrade $http_upgrade;
                proxy_set_header    Connection "upgrade";
            }			
	location /favicon.ico {     //这个是logo图片,建议不写入日志,因为这个一般都会404。
                log_not_found off;
                access_log off;
            }			
	location / {                //这个是根目录,这里只引用了一个html,login_infores.html,
                index login_infores.html;  //这个页面和index.html放在一起。
            }			
}

通过该配置,成功的将webrm和materiel这两个工程“整合在一起”欺骗了浏览器。localhost:8081/webrm 和 localhost:8081/materiel其实是对应的两个不通项目。

这样就不需要更改任何工程,通过login_infores.html这一个页面就可以显现选择哪个工程就登陆到哪个工程的功能。






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值