使用Nginx反向代理 让IIS和Tomcat等多个站点一起飞

使用Nginx 让IIS和Tomcat等多个站点一起飞

前言:

  养成一个好习惯,解决一个什么问题之后就记下来,毕竟“好记性不如烂笔头”。

  这样也能帮助更多的人 不是吗?

  

  最近闲着没事儿瞎搞,自己在写一个ASP.NET MVC的系统,所以理所当然的 在服务器上搭建了一个IIS。

  可是,学员要做JSP的项目了,涉及一些在线API回调的问题,所以没招,给他们又搭建了一个Tomcat。

  那么、问题来了。。

  我IIS里面的这些站点,可以使用IIS自带的绑定功能,分别绑定多个域名共享80端口。

  但是,Tomcat呢?肯定不能绑定80了吧?可如果不绑定80。难道我要“http://www.xxx.com:8080”这么访问Tomcat里面的站点吗?!

  于是乎,各种解决方案在脑子里想了个遍。甚至修改hosts、使用FastCGI等等都想过了。可我又不想这么玩。唉。

  没招,最后想到了Nginx这个神器。因为它 支持反向代理。而且Linux也能用哦~

  

  问:IIS7之后不也支持反向代理了嘛?你这多此一举。

  大哥。我这讲的是Nginx,不要打扰我装X好嘛。。呵呵,开个玩笑。其实装X是次要的,主要还是我服务器想换成Linux的。(说的自己都不信了 哈哈)

  废话不多说,开始正文。O(∩_∩)O哈哈~

目录:

  1. Nginx介绍
  2. 下载&安装
  3. 小试配置Nginx
  4. 最终配置
  5. 启动/停止/重启 Nginx
  6. 结尾

1. Nginx介绍

  如我“前言”所说,在IIS里面,我们搭建多个站点可以使用自带的绑定端口的方式实现。

  但是如果这时候又加一个Tomcat呢?没法绑定80端口了,因为已经被IIS占用了。可是我又不可能“http://www.xxx.com:8080”去访问吧?

  当然我们可以像我发过的一篇文章《IIS8 使用FastCGI配置PHP环境支持 过程详解》那样,在IIS中添加PHP的cgi映射,来添加对php的支持。

  JSP也同样可以使用FastCGI。但是我不想这么玩了,个人觉得 老是用IIS没啥技术含量,如果以后还遇到什么东西,不支持FastCGI怎么办呢?

  对吧。你没法改变这个社会,没招,只能改变自己去适应社会的变化。

  所以最后就想到了咱们的Nginx。

  简单介绍一下,Nginx主要支持反向代理,什么意思呢?

  说白了就是,你把80端口绑定给Nginx,然后通过配置文件告诉它:我访问www.aaa.com域名,你给我把请求转发到www.aaa.com:81上面;我访问www.bbb.com域名,你给我把请求转发到www.bbb.com:8080上面。等等等等。。

  这时候大概大家已经明白了我这里为啥用Nginx了吧。呵呵。就是因为这个功能。

  当然,如果你认为它只是做代理转发的,那你就错了。

  Nginx除了可以实现反向代理来自定义转发你的请求,它还能通过配置文件实现Session跨域、请求过滤、负载均衡等等等的功能。

  详细的介绍和使用,大家可以去官网或自行Google查阅。各种用法,各种介绍。特别详细的。

  是不是有点儿意思哈?呵呵。分享一下我这里的IIS+Tomcat的多个站点是怎么弄的吧。

  

2. 下载&安装Nginx

  进入官网http://nginx.org/,下载Nginx程序文件,最新版本列表如图:

  不像其他软件那样,下载还需要注册登录啥的,这个什么都不需要,直接选择版本就可以免费下载。而且程序仅1.xMB大小。

  点击版本连接进入后,会让您选择平台Windows还是Linux:

  这里我下载的是Windows的1.10.0:

  Nginx是绿色解压版的,不需要运行安装程序,直接解压完就能用。

  这里,我将其解压到了D:\Nginx目录了,目录文件如下:

  双击运行nginx.exe,只见一DOS界面一闪而过,我特么还以为眼花了呢。再双击。还是一闪而过。

  WTF?!什么鬼?!

  按照网上教程里面的剧本儿来说,双击运行后,确实是一闪而过,不过访问http://localhost可以看到Nginx的欢迎界面。

  但是我打开浏览器,访问后,直接找不到服务器。顿时我方了。啥玩意儿?!

  机智的我看到了D:\Nginx\logs\error.log错误日志文件,日志内容如下:

1 2016/05/16 23:55:32 [emerg] 6488#7044: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
2 2016/05/16 23:55:32 [emerg] 6488#7044: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
3 2016/05/16 23:55:32 [emerg] 6488#7044: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

  很明显,提示绑定当前计算机的80端口失败了。

  我又打开DOS,切换到D:\Nginx,输入nginx.exe,提示错误也是这个。

  于是乎,立马想到了IIS。因为如果绑定80端口失败,肯定是80被占用了啊。

  我就把所有网站都停止了,甚至IIS服务都停了,还是不行。

  你妹妹的,逼我,查看80端口到底是被谁占用了。

  大家可以使用netstat的DOS命令查看,也可以使用任务管理器中的资源查看器查看,当然如果都不会用,你也可以使用360的网络连接查看器查看。

  找到之后kill结束掉它。

  最后发现,不是IIS的问题,因为IIS并不绑定什么80端口,顶多也只是IIS里面的网站绑定的80访问端口罢了。

  罪魁祸首是另一个服务:Web Deploy服务,这个是我安装IIS的时候额外安装的一个东西,为了远程发布部署用的。

  当然,现在并不用,停止服务即可。

  然后再回去运行nginx.exe,同样是一闪而过(因为nginx是隐式运行在进程中的),但是http://localhost已经可以访问了。

  Nginx的欢迎界面如下所示:

  看到这个界面了,给我激动的,真想抱着媳妇儿狠亲一口。(然而却是单身狗依旧)

3. 小试Nginx

  我打开了IIS,新建了一个站点,域名是www.geeksss.com,绑定的端口是81。

  下面我想使用Nginx,配置之后,通过www.geeksss.com,自动将请求代理转发到www.geeksss.com:81上。

  步骤如下:

  

  之前说过,Nginx只需要设置好配置文件就可以了。

  打开D:\Nginx\conf\nginx.conf配置文件,准备自定义修改一下。

  

  桥豆麻袋、等一下。

  万一一会儿改叉劈了程序报废了改不回去了怎么办?还是先备份一下。哈哈。

  (养成个习惯)

  配置文件注释都是英文的,我就不一一介绍了,文章也不太好介绍着每个参数。

  所以我就简单地配置了一项,顺便把主要的注释都翻译过来了,修改后的内容如下:

 1 #运行用户
 2 #user www-data;
 3
 4 #启动进程,通常设置成和cpu的数量相等
 5 worker_processes 2;
 6
 7 #全局错误日志及PID文件
 8 error_log logs/error.log;
 9 error_log logs/error.log notice;
10 error_log logs/error.log info;
11 pid logs/nginx.pid;
12
13 #工作模式及连接数上限
14 events {
15     #单个后台worker process进程的最大并发链接数
16     worker_connections 1024;
17 }
18
19 #设定http服务器,利用它的反向代理功能提供负载均衡支持
20 http {
21     #设定mime类型,类型由mime.type文件定义
22     include       mime.types;
23     default_type  application/octet-stream;
24
25     #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
26     #                  ‘$status $body_bytes_sent "$http_referer" ‘
27     #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;
28
29     #设定日志格式
30     access_log  logs/access.log;
31
32     #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
33     sendfile        on;
34     #tcp_nopush     on;
35
36     #连接超时时间
37     #keepalive_timeout  0;
38     keepalive_timeout  65;
39
40     #开启gzip压缩
41     gzip  on;
42     gzip_disable "MSIE [1-6]\.(?!.*SV1)";
43
44     #设定请求缓冲
45     client_header_buffer_size    1k;
46     large_client_header_buffers  4 4k;
47
48     # www.geeksss.com
49     server{
50         listen 80;                                      #侦听端口
51         server_name  www.geeksss.com;                   #定义使用www.xx.com访问
52
53         #charset koi8-r;
54
55         access_log  logs/www.geeksss.com.access.log;    #设定本虚拟主机的访问日志
56
57         #默认请求
58         location / {
59             root /;                                     # 定义服务器的默认网站根目录位置
60             index Home/Index;                           # 定义首页索引文件的名称
61             proxy_pass  http://www.geeksss.com:81 ;     #请求转向mysvr 定义的服务器列表
62         }
63
64         #error_page  404              /404.html;
65
66         # redirect server error pages to the static page /50x.html
67         # 定义错误提示页面
68         error_page   500 502 503 504 /50x.html;
69         location = /50x.html {
70             root   /root;
71         }
72     }
73 }

nginx.conf 配置实例

  可以发现,我修改了里面的“server”配置项,注释已经很明确了,如果还不明白呢可以自行查阅相关文档或留言。

  这里简单介绍一下server配置项中的几个参数:

  1. listen:监听的端口
  2. server_name:当前的配置可以通过什么域名访问
  3. access_log:当前server的日志文件位置
  4. location:配置请求,类似路由的概念
  5. location->proxy_pass:当前请求代理转发到哪
  6. error_page:重定向错误页的位置

  我上面的server意思就是:nginx监听80端口的请求,如果是server_name过来的,则代理转发到proxy_pass。

  很简单吧?

  这样,当我访问www.geeksss.com的时候,实际上是通过Nginx将请求转发到了IIS中的www.geeksss.com:81的站点了。

4. IIS+Tomcat并用

  我搭建了两个Tomcat站点,然后修改Tomcat\conf\server.xml文件,添加了两个Host进行绑定,修改后的server.xml文件如下所示:

 1 <?xml version=‘1.0‘ encoding=‘utf-8‘?>
 2 <Server port="8005" shutdown="SHUTDOWN">
 3   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 4   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
 5   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 6   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 7   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 8
 9   <GlobalNamingResources>
10     <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
11   </GlobalNamingResources>
12
13     <Service name="Catalina">
14         <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
15         <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
16
17         <Engine name="Catalina" defaultHost="localhost">
18             <Realm className="org.apache.catalina.realm.LockOutRealm">
19                 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
20             </Realm>
21             <Host name="ts2121.bdqnbky.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
22                 <Alias>121.bdqnbky.com</Alias>
23                 <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="ts2121.bdqnbky.com_log." suffix=".txt"  timestamp="true"/>
24                 <Context path="" docBase="D:\WebSite\ts2121.bdqnbky.com\" reloadable="true" caseSensitive="false" debug="0"></Context>
25             </Host>
26             <Host name="ts2122.bdqnbky.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
27                 <Alias>122.bdqnbky.com</Alias>
28                 <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="ts2122.bdqnbky.com_log." suffix=".txt"  timestamp="true"/>
29                 <Context path="" docBase="D:\WebSite\ts2122.bdqnbky.com\" reloadable="true" caseSensitive="false" debug="0"></Context>
30             </Host>
31         </Engine>
32     </Service>
33 </Server>

修改后的Tomcat\conf\server.xml 文件

  详细的Tomcat配置就不过多介绍了,不属于本篇范围之内。毕竟估计讲详细了,又得来个长篇大论了。。。

  只需要在下面修改一下<Host>节点配置就可以了,每个Host对应一个Tomcat站点。

  其中<Host>中的<Alias>表示的是当前<Host>配置的站点绑定的域名。

  也就是说,现在我的Tomcat有两个站点:http://ts2121.bdqnbky.com:8080和http://ts2122.bdqnbky.com:8080。

  再加上我的IIS里面其中的两个站点:http://www.geeksss.com:81和http://api.geeksss.com:82两个站点。

  现在一共是四个站点。而且域名都不一样。

  下面,配置Nginx,nginx.conf文件配置如下:

  1 #运行用户
  2 #user www-data;
  3
  4 #启动进程,通常设置成和cpu的数量相等
  5 worker_processes 2;
  6
  7 #全局错误日志及PID文件
  8 error_log logs/error.log;
  9 error_log logs/error.log notice;
 10 error_log logs/error.log info;
 11 pid logs/nginx.pid;
 12
 13 #工作模式及连接数上限
 14 events {
 15     #单个后台worker process进程的最大并发链接数
 16     worker_connections 1024;
 17 }
 18
 19 #设定http服务器,利用它的反向代理功能提供负载均衡支持
 20 http {
 21     #设定mime类型,类型由mime.type文件定义
 22     include       mime.types;
 23     default_type  application/octet-stream;
 24
 25     #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
 26     #                  ‘$status $body_bytes_sent "$http_referer" ‘
 27     #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;
 28
 29     #设定日志格式
 30     access_log  logs/access.log;
 31
 32     #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
 33     sendfile        on;
 34     #tcp_nopush     on;
 35
 36     #连接超时时间
 37     #keepalive_timeout  0;
 38     keepalive_timeout  65;
 39
 40     #开启gzip压缩
 41     gzip  on;
 42     gzip_disable "MSIE [1-6]\.(?!.*SV1)";
 43
 44     #设定请求缓冲
 45     client_header_buffer_size    1k;
 46     large_client_header_buffers  4 4k;
 47
 48     # www.geeksss.com
 49     server{
 50         listen 80;                                      #侦听端口
 51         server_name  www.geeksss.com;                   #定义使用www.xx.com访问
 52
 53         #charset koi8-r;
 54
 55         access_log  logs/www.geeksss.com.access.log;    #设定本虚拟主机的访问日志
 56
 57         #默认请求
 58         location / {
 59             root /;                                     # 定义服务器的默认网站根目录位置
 60             index Home/Index;                           # 定义首页索引文件的名称
 61             proxy_pass  http://www.geeksss.com:81 ;     #请求转向mysvr 定义的服务器列表
 62         }
 63
 64         #error_page  404              /404.html;
 65
 66         # redirect server error pages to the static page /50x.html
 67         # 定义错误提示页面
 68         error_page   500 502 503 504 /50x.html;
 69         location = /50x.html {
 70             root   /root;
 71         }
 72     }
 73
 74
 75     # api.geeksss.com
 76     server{
 77         listen 80;                                      #侦听端口
 78         server_name  api.geeksss.com;                   #定义使用www.xx.com访问
 79
 80         #charset koi8-r;
 81
 82         access_log  logs/api.geeksss.com.access.log;    #设定本虚拟主机的访问日志
 83
 84         #默认请求
 85         location / {
 86             root /;                                     # 定义服务器的默认网站根目录位置
 87             #index Home/Index;                           # 定义首页索引文件的名称
 88             proxy_pass  http://api.geeksss.com:82;      #请求转向mysvr 定义的服务器列表
 89         }
 90
 91         #error_page  404              /404.html;
 92
 93         # redirect server error pages to the static page /50x.html
 94         # 定义错误提示页面
 95         error_page   500 502 503 504 /50x.html;
 96         location = /50x.html {
 97             root   /root;
 98         }
 99     }
100
101     # ts2121.bdqnbky.com
102     server {
103         listen 80;                                      #侦听端口
104         server_name  ts2121.bdqnbky.com;                   #定义使用www.xx.com访问
105
106         #charset koi8-r;
107
108         access_log  logs/ts2121.bdqnbky.com.access.log;    #设定本虚拟主机的访问日志
109
110         #默认请求
111         location / {
112             root /;                                     # 定义服务器的默认网站根目录位置
113             index  index.jsp;                           # 定义首页索引文件的名称
114             proxy_pass  http://ts2121.bdqnbky.com:8080 ;   #请求转向mysvr 定义的服务器列表
115         }
116
117         #error_page  404              /404.html;
118
119         # redirect server error pages to the static page /50x.html
120         # 定义错误提示页面
121         error_page   500 502 503 504 /50x.html;
122         location = /50x.html {
123             root   /root;
124         }
125
126         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
127         #
128         #location ~ \.php$ {
129         #    proxy_pass   http://127.0.0.1;
130         #}
131
132         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
133         #
134         #location ~ \.php$ {
135         #    root           html;
136         #    fastcgi_pass   127.0.0.1:9000;
137         #    fastcgi_index  index.php;
138         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
139         #    include        fastcgi_params;
140         #}
141
142         # deny access to .htaccess files, if Apache‘s document root
143         # concurs with nginx‘s one
144         #
145         #location ~ /\.ht {
146         #    deny  all;
147         #}
148     }
149
150     # ts2122.bdqnbky.com
151     server{
152         listen 80;                                      #侦听端口
153         server_name  ts2122.bdqnbky.com;                #定义使用www.xx.com访问
154
155         #charset koi8-r;
156
157         access_log  logs/ts2122.bdqnbky.com.access.log; #设定本虚拟主机的访问日志
158
159         #默认请求
160         location / {
161             root /;                                     # 定义服务器的默认网站根目录位置
162             #index Home/Index;                          # 定义首页索引文件的名称
163             proxy_pass  http://ts2122.bdqnbky.com:8080; #请求转向mysvr 定义的服务器列表
164         }
165
166         #error_page  404              /404.html;
167
168         # redirect server error pages to the static page /50x.html
169         # 定义错误提示页面
170         error_page   500 502 503 504 /50x.html;
171         location = /50x.html {
172             root   /root;
173         }
174     }
175
176
177     # another virtual host using mix of IP-, name-, and port-based configuration
178     #
179     #server {
180     #    listen       8000;
181     #    listen       somename:8080;
182     #    server_name  somename  alias  another.alias;
183
184     #    location / {
185     #        root   html;
186     #        index  index.html index.htm;
187     #    }
188     #}
189
190
191     # HTTPS server
192     #
193     #server {
194     #    listen       443 ssl;
195     #    server_name  localhost;
196
197     #    ssl_certificate      cert.pem;
198     #    ssl_certificate_key  cert.key;
199
200     #    ssl_session_cache    shared:SSL:1m;
201     #    ssl_session_timeout  5m;
202
203     #    ssl_ciphers  HIGH:!aNULL:!MD5;
204     #    ssl_prefer_server_ciphers  on;
205
206     #    location / {
207     #        root   html;
208     #        index  index.html index.htm;
209     #    }
210     #}
211
212 }

nginx.conf 最终的配置

  可以看到,我配置了四个server,也就对应着每个站点。

  其中的listen监听端口都是80。但是server_name,也就是请求进入的域名却不相同。

  然后通过location -> proxy_pass代理转发到了实际的每个站点。

  这时,只需要如下访问即可自动跳转到对应的域名不同的各个站点,而且不需要添加任何端口号,因为Nginx自动给你转发过去了:

  http://www.geeksss.com

  http://api.geeksss.com

  http://ts2121.bdqnbky.com

  http://ts2122.bdqnbky.com

  OK。大功告成。

  

5. 启动/停止/重启 Nginx

  DOS命令即可控制,为了使用方便,大家也可以将Nginx所在目录配置到系统环境变量的path中,方便随时随地通过dos控制。

  启动:nginx -s start

  停止:nginx -s stop

  重启:nginx -s reload

  其它命令大家可以参阅官网文档,其实暂时主要用到的也就上面这三个命令了。哈哈

6. 结尾

  关于Nginx其他的配置,例如跨域和负载均衡等等,大家可以先把这个玩儿明白了,然后其实就很简单了。

  无非就是修改点儿配置文件而已。

  而且Linux里面的用法和这个也是一样的。

  等有时间了,我再搞个相应的文章。

  

  最后,觉得听懂了,感觉还不错的,记得点赞推荐哦~

  O(∩_∩)O 摸摸哒~

  

时间: 2024-08-02 06:06:43

使用Nginx反向代理 让IIS和Tomcat等多个站点一起飞的相关文章

Nginx反向代理后端多个Tomcat、Nginx+PHP服务器(Nginx的代理和负载功能)

需求分析: 现有3个二级域名,一个IP地址,要实现将这3个域名通过1个IP地址对外提供web服务,可使用IP+端口的方式对域名进行解析,且互不影响.如: Domain1:www.huangming.org     IPADDR:192.168.1.33:80 Domain2:web1.huangming.org    IPADDR:192.168.1.33:8080 Domain3:web2.huangming.org    IPADDR:192.168.1.33:8080 其中Domain1作

nginx反向代理后端IIS持续报错504

故障:使用nginx反向代理后端的IIS服务器出现报错504 gateway time-out 在网上查找修改buffer等内容无法解决 在nginx的配置文件中 event{ accept_mutex off; } 问题解决

Nginx反向代理下IIS获取真实IP

1. iis 如果放在反向代理后面,日志里的c-ip是反向代理服务器的ip,不是真正用户的ip,想要记录用户的ip要做两件事. 一.在反向代理设置X-Forwarded-For段,以下为nginx下的配置示例: server { location { …… proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for; …… } } 二.在iis站点上安装下面这个isapi filter,这东西是在f5的开发论坛上找到的,按开发者的话说

nginx反向代理tomcat提示13 permission denied while connecting to upstream

nginx反向代理tomcat提示13 permission denied while connecting to upstream,网上很多都是说13 permission denied while reading to upstream,这是两个完全不同的错误,我遇到的如下截图: 查看selinux日志发现错误: 后来发现是selinux的问题,于是先关掉selinux:setenforce 0:然后再访问果然好使. 于是启用selinux,再执行下面的命令,修改selinux的值: set

ubuntu 16.04利用docker搭建java+tomcat+nginx反向代理/动静分离

ubuntu 16.04利用docker搭建java+tomcat+nginx反向代理 新建两个docker容器 docker run -it --name Tomcat-mysql -v /mnt:/mnt -p 8866:80 -p 33006:3306 ubuntu /bin/bash docker run -itd --name webserver -p 8888:80 -v /mnt/:/mnt/ ubuntu /bin/bash [email protected]:~# docker

nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决

Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法正常进行了. 1 2 3 4 5 6 7 8 9 location / {             proxy_pass   http://192.168.1.12:11080/v1/;                      proxy_set_header   Host    $host;  

nginx反向代理tomcat集群实现动静分离

我们都知道,nginx作为一个轻量级的web服务器,其在高并发下处理静态页面的优越性能是tomcat这样的web容器所无法媲美的,tomcat更倾向于处理动态文件,所以一个web应用可以通过nginx反向代理来实现动静分离,静态文件由nginx处理,动态文件由tomcat处理. 环境: hadoop0.updb.com    192.168.0.100    nginx server hadoop2.updb.com    192.168.0.102    tomcat server hadoo

nginx反向代理到后端tomcat,并将IP地址发送到后端的配置

nginx反向代理到后端,并将IP地址发送到后端的tomcat上. 假设我们的网站叫demo.demo.com 前端Nginx配置如下: /usr/local/nginx/conf/nginx.conf 在http段加上下面4行:     proxy_set_header X-Forwarded-For $remote_addr;     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     proxy_set_head

nginx反向代理tomcat日志获取真实IP

今天测试一下nginx反向代理功能时,让tomcat日志里获取用户真实IP地址,谷歌了一下,都是一篇文章的内容,复制了tomcat配置文件中的要修改的内容,可怎么也获取不到,神奇了就!无奈之下,仔细读每行复制的内容,发现问题了,估计都要是搜索到那篇文章的话,都得无法获取真实IP地址,就一个小小的地方.开始检查配置内容: (1)nigix  nginx.conf配置文件中: proxy_set_header  Host $host; proxy_set_header  X-Real-IP $rem