㈠ 如何配置多台Nginx代理服务器如何实现session共享
如果是同域名,一般是借用sessionid(cookie)。 其实关键问题是session的数据保存的路径问题,在session里,可以设定N个tomcat,设定session保存的介质相同就可以了。 最好,可以考滤用数据库介质。
㈡ 如何配置https nginx
cd /etc/nginxvim nginx.conf## HTTPS server configuration#server { listen 443; server_name 本机的IP地址; ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_session_timeout 5m;# ssl_protocols SSLv2 SSLv3 TLSv1;# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;# ssl_prefer_server_ciphers on; location / { #root html; #index testssl.html index.html index.htm; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://IP地址/ssl/; }}1234567891011121314151617181920212223242526272829重启nginx,在浏览器输入:https://IP地址 会跳转到 http://IP地址/ssl/ 这个地址(后期调整为webservice接口地址即可)三、受浏览器信任的StartSSL免费SSL证书:跟VeriSign一样,StartSSL(网址:http://www.startssl.com,公司名:StartCom)也是一家CA机构,它的根证书很 久之前就被一些具有开源背景的浏览器支持(Firefox浏览器、谷歌Chrome浏览器、苹果Safari浏览器等)。四、项目需要,将访问目录 \services\ 由http访问 重定向到 https (解决方法:nginx rewrite 加上 location 方式实现)location ~ /services/.*$ { if ($server_port ~ "^80$"){ set $rule_0 1$rule_0; } if ($rule_0 = "1"){ rewrite /(.*) https://IP地址/$1 permanent; break; } }12345678五,配置结束上传以后用nginx -t 测试下配置无误 就reload一下nginx服务 检查443端口是否在监听/usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful (显示表示配置文件没有错误)service nginx reload (重新加载nginx服务) netstat -lan | grep 443 (查看443端口) tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN (有看到这一行 就表示HTTPS已经在工作了) 1234567
㈢ nginx 文件配置 如何设置域名
1.路径: /etc/nginx/nginx.conf 和 /etc/nginx/conf.d,
其实只有/etc/nginx/nginx.conf 这一个配置文件,因为在nginx.conf中,其他配置文件都是可以利用 include 指令·引入的
部分配置文件:
server{listen 80;server_name test.net;root /var/www/test;#include none.conf;#error_page 404 /404.html;location ~ [^/].php(/|$){include fastcgi_params;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;client_max_body_size 500m;}location ~ .*.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*.(js|css)?${expires 12h;}#location = /HBLS.deb {# rewrite . /HBLS.deb;# default_type application/x-deb;#}access_log off;#access_log logs/lung.access.log;#error_log logs/lung.error.log debug;}
㈣ Nginx 与多台tomcat整合,实现session共享配置,一直实现不了,请高手指点,谢谢。
Nginx作为负载均衡前端 配置可以参照apache httpd server至于tomcat session共享 是群集的问题 tomcat官方网站文档写的很明白了 http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html直接上面的配置到service.xml就可以 引文tomcat的session同步是通过广播实现的,所以如果你是windows 貌似已经默认开启了组播段ip如果你是linux或者别的 请手动打开服务器的组播地址段(方法网上找 很多)官方建议是tomcat集群不要超过4台 否则会引起广播风暴从本质上看 tomcat的集群性能不算很好 如果你有很大数据量的需求 这里推荐glassfish 配置比tomcat简单 而且群集信息同步使用一致性hash算法 既稳定又高效 另外还有jboss 这个就不多说了 至于jetty(短小精悍) 新手不推介研究 先把tomcat搞清楚先
㈤ 如何解决Nginx的session一致性问题
方案一:会话保持模块,即通过cookie实现客户端与后端服务器的会话保持, 在一定条件下可以保证同一个客户端访问的都是同一个后端服务器,即可解决session取不到、session不一致的问题。方案二:Session共享(推荐使用),即服务器在分发请求到了一台机器的时候,会先去session缓存数据库查看是否有该用户的session,如果有则取出,否则新建一个。那么这个Session共享如何解决呢?共有2种方法:1、memcached缓存方案。2、Redis缓存方案。下面重点介绍session共享的问题:1、memcached缓存方案 memcached缓存数据库是专门管理session的,memcached 缓存服务可以和tomcat整合,帮助tomcat 共享管理session。 安装memcached:# yum –y install memcached11启动memcached(默认端口是11211):# service memcached start11通过telnet测试memcached数据库# telnet localhost 1121111测试set abc 0 0 512345get abcquit12341234将memcached的jar包拷贝到tomcat的lib下,jar包的下载地址:http://download.csdn.net/detail/chenweijisun/9826940在tomcat的server.xml中配置jvmRoute<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">1212在tomcat的context.xml的Context配置Manager<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:192.168.17.4:11211"sticky="false"lockingMode="auto"sessionBackupAsync="false"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />123456789123456789为了方便测试,index.jsp也配置下,文件在/tomcat安装目录/webapps/ROOT/index.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>SessionID:<%=session.getId()%><br/>SessionIP:<%=request.getServerName()%> <br/><h1>tomcat2 page</h1>12345671234567测试2、redis缓存方案 安装redis:# yum –y install redis11启动redis# service redis start11测试(redis的默认端口是6379):# telnet localhost 637911修改配置文件vi /etc/redis.conf,将bind的127.0.0.1修改为本机地址,否则只能本机访问了导入redislib中三个jar包到tomcat中,jar包的下载地址:http://download.csdn.net/detail/chenweijisun/9826941在tomcat的context.xml的Context配置Manager<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /><Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"host="192.168.17.4"port="6379"database="0"maxInactiveInterval="60" />
㈥ centos7+nginx+php+mysql怎样实现session会话
构建Tomcat集群实现session共享之前首先得有一个集群环境,就像谈恋爱之前要先有个女朋友是一个道理,我们在/usr目录下创建一个/tomcat_cluster目录,并在这个目录中集群3个Tomcat,很简单就像这样:这里写图片描述然后我们一次修改这三个tomcat的端口,包括shutdown端口、http协议端口以及AJP协议端口。中间的不用说了,前后这两个端口是为了保证可以同时启动多个Tomcat,http端口我们分别修改为8081、8082和8083,接下来就可以着手开始配置session共享了。Kyro序列化sessionRT,首先memcached我的版本是1.4.25,在memcached对session的管理策略中,我们选择kyro,关于memcached-session-manager的版本我这里选择1.5.1,由于我们使用的是tomcat7所以还需要memcached-session-manager-tc7-1.5.1这个jar包。在此就不一一列举了,jar包版本很重要否则容易出现冲突,我这里把用到的所有jar包打包上传,用的时候直接把它们全部复制到tomcat目录下的lib目录即可,tomcat-7.0.57版本的话可以直接无脑覆盖,否则需要跳过重复的jar包,全部jar包的下载地址如下:到Linux公社1号FTP服务器下载——————————————分割线——————————————FTP地址:ftp //ftp1.linuxidc.com用户名:ftp1.linuxidc.com密码:www.linuxidc.com在 2016年LinuxIDC.com\9月\Linux CentOS 7 下通过Memcached实现Session共享\下载方法见 http //www linuxidc.com/Linux/2013-10/91140.htm——————————————分割线——————————————下载完成后即可通过winscp来快速完成tomcat的jar包替换:这里写图片描述配置说明jar包准备好的话就分别拷贝到我们集群的3个Tomcat的lib目录下,然后再分别修改每个Tomcat目录下的conf/context.xml文件,在其中添加memcached-session-manager的配置。因为我们这里集群了3台Tomcat,所以我们必须使用non-sticky模式,即采用非粘性session管理配置,配置文件如下:<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="n1:127.0.0.1:11211" //memcached服务器地址sticky="false" //注意一定是falselockingMode="auto"sessionBackupAsync="false"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"sessionBackupTimeout="1000"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>memcached的默认端口号是11211,如果不确定的话可以通过netstat来查看,命令如下:netstat -tunlp | grep memcached这样就可以清楚的看到memcached所占用的端口:这里写图片描述没有其它问题的话就依次启动三个Tomcat,再启动Memcached,接着就可以测试session共享了。测试配完之后当然要测试一下了,准备一个最简单的java web项目:这里写图片描述在IDE创建一个web项目部署后再从tomcat拷贝出来即可,唯一需要改的就是index.jsp,我们看一下里面的代码:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'index.jsp' starting page</title></head><body><%String sessid = request.getSession().getId();%>sessionid=<%=sessid%><br/>This is my JSP page 111111.<br></body></html>页面也很简单,只是加入了打印sessionid的代码,因为我们要根据sessionid去判断session是否一致,将这个项目分别拷贝至三个Tomcat的webapps目录下,为了做点区分最好再改一下静态文本,比如tomcat1下的是“This is my JSP page 111111.”,而tomcat2下的改为222222,同理tomcat3下的改为333333,项目传完后,依次启动这三个Tomcat,再启动memcached,通过浏览器访问看一下结果:这里写图片描述仔细观察一下运行结果,可以发现sessionid都是一致的,这也就很好的说明了我们成功的在这三个Tomcat之间共享了session。总结简单记录一下通过Memcached来实现session共享的全过程,希望对遇到同样问题的朋友有所帮助,The End。
㈦ centos服务器nginx怎么开启session
第一章 测试环境说明1.1 系统说明系统均选用最小化安装的centos 5.71.2 软件说明nginx-0.8.55pcre-8.13apache-tomcat-6.0.35 jdk-6u31-linux-x64nginx-upstream-jvm-route-0.11.3 规划说明客户端通过访问nginx做的负载均衡层去访问后端的web运行层(tomcat),如下图:另外,关于session复制原理,简单来说如下图:负载层:192.168.254.200安装:pcre、nginx、nginx-upstream-jvm-route-0.1后端tomcat运行层:192.168.254.221、192.168.254.222安装:tomcat、jdk第2章 安装部署说明2.1 负载均衡层安装部署说明2.1.1 依赖包安装yum install wget make gcc gcc-c++ -yyum install pcre-devel openssl-devel patch -y2.1.2 创建nginx运行帐号useradd www -s /sbin/nologin -M2.1.3 Pcre安装解压pcre安装包:tar xvf pcre-8.13.tar.gz cd pcre-8.13编译pcre:./configure –prefix=/usr/local/pcre安装:make && make install2.1.4 Nginx安装解压nginx和nginx-upstreamtar xvf nginx-upstream-jvm-route-0.1.tar.gz tar xvf nginx-0.8.55.tar.gz cd nginx-0.8.55配置jvmroute路径:patch -p0 < ../nginx_upstream_jvm_route/jvm_route.patch 编译nginx:./configure \–user=www \–group=www \–prefix=/usr/local/nginx \–with-http_stub_status_mole \–with-http_ssl_mole \–with-http_flv_mole \–with-http_gzip_static_mole \–pid-path=/var/run/nginx.pid \–error-log-path=/var/log/nginx/error.log \–http-log-path=/var/log/nginx/access.log \–http-client-body-temp-path=/var/tmp/nginx/client_body_temp \–http-proxy-temp-path=/var/tmp/nginx/proxy_temp \–http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp \–http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp \–http-scgi-temp-path=/var/tmp/nginx/scgi_temp \–add-mole=/root/scripts/src/nginx_upstream_jvm_route/安装:make && make install2.1.5 Nginx配置文件修改Nginx作为负载的配置文件修改很简单,只需添加后端web服务器的ip及端口即可,修改运行帐号,下面配置文件中的红色字体为本次测试环境的修改值;user www www;worker_processes 8;#error_log logs/nginx_error.log crit;#pid /usr/local/nginx/nginx.pid;#Specifies the value for maximum file descriptors that can be opened by this process.worker_rlimit_nofile 51200;events{use epoll;worker_connections 2048;}http{upstream backend {server 192.168.254.221:80 srun_id=real1; server 192.168.254.222:80 srun_id=real2; jvm_route $cookie_JSESSIONID|sessionid reverse;}include mime.types;default_type application/octet-stream;#charset gb2312;charset UTF-8;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 20m;limit_rate 1024k;sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;gzip on;#gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;#limit_zone crawler $binary_remote_addr 10m;server{listen 80;server_name 192.168.254.250;index index.jsp index.htm index.html;root /data/www/;location / {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;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 1h;}location /Nginxstatus {stub_status on;access_log off;}log_format access '$remote_addr – $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';# access_log off;}}
㈧ nginx 的配置文件用什么脚本
本文详细介绍了Nginx配置的一些参数说明,为以后的配置提供一定的帮助。有两种方式来通过这些信号去控制 Nginx,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill – XXX 来控制 Nginx。AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统检测nginx配置文件是否正确/usr/local/nginx/sbin/nginx -t -c nginx.conf-c 配置文件路径-g Set global directives. (version >=0.7.4)-t 检测文件是否正确不执行-v Print version.-V Print nginx version, compiler version and configure parameters.编译时如果使用了–with-debug编译,还可以使用error_log file [ debug_core| debug_http | debug_event …] 来获得debug信息通过信号对Nginx进行控制Nginx支持下表中的信号:信号名 作用描述TERM, INT 快速关闭程序,中止当前正在处理的请求QUIT 处理完当前请求后,关闭程序HUP 重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求USR1 重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件USR2 平滑升级可执行程序WINCH 从容关闭工作进程有两种方式来通过这些信号去控制 Nginx,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill – XXX <pid> 来控制 Nginx,其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall – s HUP nginx 来让 Nginx 重新加载配置。配置:use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];FreeBSD使用kqueue,Linux选epoll.worker_connections number 每个worker的最大连接数Maxclient = work_processes *worker_connectionsnginx的upstream目前支持4种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。2、ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。3、fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。4、url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。代理只需要在nginx的配置文件中增加虚拟主机,然后加入\proxy_pass http://localhost:8000;负载均衡:只需要在http中增加upstream tgcluster {#定义负载均衡设备的Ip及设备状态ip_hash;server 127.0.0.1:9090 down;server 127.0.0.1:8080 weight=2;server 127.0.0.1:6060;server 127.0.0.1:7070 backup;}在需要使用负载均衡的server中增加proxy_pass http://tgcluster/;每个设备的状态设置为:1.down 表示单前的server暂时不参与负载2.weight 默认为1.weight越大,负载的权重就越大。3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误4.fail_timeout:max_fails次失败后,暂停的时间。5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。nginx支持同时设置多组的负载均衡,用来给不用的server来使用。client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debugclient_body_temp_path 设置记录文件的目录 可以设置最多3层目录location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡FASTCGI配置:请将以下内容保存为fastcgi_params文件,保存于/usr/local/nginx/conf下(Ubuntu可保存于/etc/nginx下),他为我们的FastCGI模块设置了基本的环境变量:#fastcgi_paramsfastcgi_param GATEWAY_INTERFACE CGI/1.1;fastcgi_param SERVER_SOFTWARE nginx;fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param CONTENT_LENGTH $content_length;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param SCRIPT_NAME $fastcgi_script_name;fastcgi_param REQUEST_URI $request_uri;fastcgi_param DOCUMENT_URI $document_uri;fastcgi_param DOCUMENT_ROOT $document_root;fastcgi_param SERVER_PROTOCOL $server_protocol;fastcgi_param REMOTE_ADDR $remote_addr;fastcgi_param REMOTE_PORT $remote_port;fastcgi_param SERVER_ADDR $server_addr;fastcgi_param SERVER_PORT $server_port;fastcgi_param SERVER_NAME $server_name;# PHP only, required if PHP was built with –enable-force-cgi-redirectfastcgi_param REDIRECT_STATUS 200;请特别注意加粗的一行,PHP-CGI特别需要此行信息来确定PHP文件的位置。另外需要在PHP-CGI的配置文件(Ubuntu 上此配置文件位于/etc/php5/cgi/php.ini)中,打开cgi.fix_pathinfo选项:cgi.fix_pathinfo=1;这样php-cgi方能正常使用SCRIPT_FILENAME这个变量。接下来在nginx的配置中针对php文件配置其利用FastCGI进程来执行:server {index index.php;root /usr/local/nginx/html;location ~ .*.php$ {include /usr/local/nginx/conf/fastcgi_params; #请根据自己保存的路径进行设置fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000; #请根据自己的FastCGI绑定的地址和端口进行配置}}通知Nginx重新载入配置:kill -HUP `cat /usr/local/nginx/logs/nginx.pid`Ubuntu用户可以使用init脚本:sudo /etc/init.d/nginx reload然后启动php-cgi -b 127.0.0.1:9000如果出现No input file specified表示SCRIPT_FILENAME设置的有问题。使用lighttpd的 spawn-fcgiget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2 #获取Lighttpd的源码包tar -xvjf lighttpd-1.4.18.tar.bz2cd lighttpd-1.4.18./configure #编译makecp src/spawn-fcgi /usr/local/bin/spawn-fcgi #取出spawn-fcgi的程序下面我们就可以使用 spawn-fcgi 来控制php-cgi的FastCGI进程了/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi参数含义如下-f <fcgiapp> 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置-a <addr> 绑定到地址addr-p <port> 绑定到端口port-s <path> 绑定到unix socket的路径path-C <childs> 指定产生的FastCGI的进程数,默认为5(仅用于PHP)-P <path> 指定产生的进程的PID文件路径-u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等