单核所能产生的线程数问题
nginx默认只使用cpu的一个核,单核支持的线程数是1024,意味着超过1024就会崩
需要在配置中加上:worker_processes 4 (数字“4”为您所需要使用的核数)
单个文件访问数量的问题
nginx默认只允许单个文件被4096个线程打开,意味着如果nginx的线程超过4096也会崩,哪怕设置CPU核数大于4个
需要在配置中加上:worker_rlimit_nofile 32768
,
nginx默认只使用cpu的一个核,单核支持的线程数是1024,意味着超过1024就会崩
需要在配置中加上:worker_processes 4 (数字“4”为您所需要使用的核数)
nginx默认只允许单个文件被4096个线程打开,意味着如果nginx的线程超过4096也会崩,哪怕设置CPU核数大于4个
需要在配置中加上:worker_rlimit_nofile 32768
,
西部数码推出了免费的ssl证书, 办法机构是 trustAsia.
根据流程申请后, 并且使用nginx配置我的证书后, 看上去一切正常.
但是此时同事发来贺电说打开空白…
总结情况就是: 苹果机访问一切正常, 但是安卓机的微信端访问空白, 安卓机的自带浏览器提示SSL警告.
这是 联想乐檬X3 LITE 自带浏览器访问的结果.
于是我怀疑是不是证书域名打错了? 检查了后不是.
于是在想会不会微信对这个机构颁发的证书不信任? 但是查询了一下腾讯自己也有申请这一个证书的功能, 腾讯不会不支持自家的东西.
但是我以前弄过另外一个项目是正常的, 为什么这次不正常?
于是对比了一下nginx的证书配置, 以前的项目我是使用了pem+key证书的搭配, 这个出问题的项目使用的是cer+key的搭配. 于是我通过网站在线合成pem的网页把cer和key合成为pem证书后使用(也就是pem+key的模式), 结果一切正常..! 问题到此已经解决…
为什么会这样呢? 由于没有时间去深入研究, 所以这个问题留给大家去研究啦..!
server { listen 80; server_name www.sway.com.cn; location / { proxy_pass http://127.0.0.1:8080; 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; } }
最近做的一个项目, 需要使用 tomcat 集群, 且项目需要使用https协议
但是,明明是https url请求, 但是java里的 request.getScheme() 的输出却是 http
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_set_header X-Forwarded-Proto $scheme;
配置Tomcat server.xml 的 Engine 模块下配置一个 Valve:
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" protocolHeaderHttpsValue="https"/>
配置双方的 X-Forwarded-Proto 就是为了正确地识别实际用户发出的协议是 http 还是 https。
这样以上5项测试就都变为正确的结果了,就像用户在直接访问 Tomcat 一样。
参考资料:
http://www.th7.cn/Program/java/201608/929190.shtml
http://blog.csdn.net/pwq296306654/article/details/51760844
http://feitianbenyue.iteye.com/blog/2056357
由于项目需要 负载均衡由NBL 转成nginx 反向代理。考虑都是https模块,所以证书成了个难题。
解决方案:
1.下载openssl(windows 安装包)
2.打开bin/下面的openssl.exe
3.再原来的IIS上面把证书导出.pfx(域服务器证书申请,主要适用域内)
4.利用openssl 进行转化:
openssl pkcs12 -in server.pfx -nodes -out server.pem # 生成明文所有内容 openssl rsa -in server.pem -out server.key # 取 key 文件 openssl x509 -in server.pem -out server.crt # 取证书
5.nginx 上面开始配置:
upstream backend { #ip_hash; server 10.1.0.245:81; server 10.1.0.42:81; } server { listen 80; listen 443 ssl; server_name office.dahuatech.com; ssl_certificate server.crt; ssl_certificate_key server.key; #ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; #ssl_prefer_server_ciphers on; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://backend; #Proxy Settings 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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; }
按照上面配置就可以。这样域内所有的用户都可以在信任证书内。
记录下 送给需要的人
OPENSSL 安装包下载:Win32OpenSSL-0_9_8l.zip
Ubuntu下安装nginx,直接apt-get install nginx就行了,很方便。
但是今天装了CentOS6.2,直接yum install nginx不行,要先处理下源,下面是安装完整流程,也十分简单:
1、运行并安装源:
CentOS 7 下使用这个命令
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
CentOS 6 下使用这个命令
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
2,查看yum的nginx信息
[]# yum info nginx Loaded plugins: fastestmirror Determining fastest mirrors * base: mirror.esocc.com * extras: mirror.esocc.com * updates: mirror.esocc.com base | 3.7 kB 00:00 base/primary_db | 4.4 MB 00:28 extras | 3.5 kB 00:00 extras/primary_db | 19 kB 00:00 nginx | 2.9 kB 00:00 nginx/primary_db | 22 kB 00:00 updates | 3.5 kB 00:00 updates/primary_db | 2.1 MB 00:10 Installed Packages Name : nginx Arch : x86_64 Version : 1.4.0 Release : 1.el6.ngx Size : 874 k Repo : installed From repo : nginx Summary : nginx is a high performance web server URL : http://nginx.org/ License : 2-clause BSD-like license Description : nginx [engine x] is an HTTP and reverse proxy server, as well as : a mail proxy server
3,安装nignx
[root@server ~]# yum install nginx
4,启动nginx
CentOS 7 下使用这个命令:
systemctl start nginx
CentOS 6 下使用这个命令
service nginx start
4,然后进入浏览器,输入http://xxxxxxx/测试,如果看到
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
恭喜你,你成功了!
5、设置为开机启动
CentOS 7 下使用这个命令
systemctl enable nginx.service
CentOS 6下使用这个命令
chkconfig nginx on