1 写在nginx.conf里的代码 别忘了要加
2 ssi 不能解析../../
src/http/modules/ngx_http_ssi_filter_module.c 找到源码里这个文件 if (ngx_http_parse_unsafe_uri(r, uri, &args, &flags) != NGX_OK) { return NGX_HTTP_SSI_ERROR; } 然后把这行删掉。
再重新编译源代码。
3 session粘滞问题
4 ip_hash
nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义的:
upstream backend {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
ip_hash;
}
ip_hash是容易理解的,但是因为仅仅能用ip这个因子来分配后端,因此ip_hash是有缺陷的,不能在一些情况下使用:
1)/ nginx不是最前端的服务器。ip_hash要求nginx一定是最前端的服务器,否则nginx得不到正确ip,就不能根据ip作hash。譬如使用的是squid为最前端,那么nginx取ip时只能得到squid的服务器ip地址,用这个地址来作分流是肯定错乱的。
2)/ nginx的后端还有其它方式的负载均衡。假如nginx后端又有其它负载均衡,将请求又通过另外的方式分流了,那么某个客户端的请求肯定不能定位到同一台session应用服务器上。这么算起来,nginx后端只能直接指向应用服务器,或者再搭一个squid,然后指向应用服务器。最好的办法是用location作一次分流,将需要session的部分请求通过ip_hash分流,剩下的走其它后端去。
Nginx + tomcat 解决session粘滞问题 nginx-upstream-jvm-route
patch -p0 < ../nginx-upstream-jvm-route-read-only/jvm_route.patch
--add-module=/root/nginx-upstream-jvm-route-read-only
Server.xml
<Engine name="Catalina" defaultHost="localhost" >
分别修改为:
Tomcat01:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="a">
Tomcat02:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="b">
upstream backend {
server 192.168.2.88:8080 srun_id=a;
server 192.168.2.89:8080 srun_id=b;
jvm_route $cookie_JSESSIONID|sessionid reverse;
}
location / aa/
{
proxy_pass http://backend;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
}
5 如何使用Nginx Proxy
朋友一台服务器运行tomcat 为8080端口,IP:192.168.1.2:8080;另一台机器IP:192.168.1.8。朋友想通过访问http://192.168.1.8即可访问tomcat服务,配置如下:
在192.168.1.8的nginx.conf上配置如下:
1)server {
2) listen 80;
3) server_name java.linuxtone.org
4) location / {
5)proxy_pass http://192.168.1.2:8080;
6)include /usr/local/nginx/conf/proxy.conf。
|
所有评论仅代表网友意见