Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,也可以代理tcp服务器,实现负载、主备功能。
下面分别是http、https和tcp服务器的配置。
目录
1.nginx代理http
upstream tomcatserver{ server ip:8080 max_fails=2 fail_timeout=30s; server ip:8090 max_fails=2 fail_timeout=30s backup; } location /usercenter { proxy_connect_timeout 1; proxy_read_timeout 1; proxy_send_timeout 1; proxy_next_upstream error timeout http_502 http_503 http_504; proxy_pass ; }ip:8080主机
ip:8090备机
参数解释
backup 参数是作为备机使用,当主机挂掉了就会顶上。
max_fails参数的理解:max_fails默认为1,fail_timeout默认为10秒,也就是说,十秒内超过一次故障,标记设备不可用。
proxy_connect_timeout 参数是连接的超时时间。 设置成1,表示是1秒后超时会连接到另外一台服务器。
proxy_read_timeout 参数是接收数据超时时间, 设置成1, 如果连续的1s内没有收到1个字节, 连接关闭,默认60s。
proxy_send_timeout 参数是发送数据到服务器的超时时间, 设置成1, 如果连续的1s内没有发送1个字节, 连接关闭,默认60s。
2.nginx代理tcp服务器
nginx 1.9.0以上版本可以支持tcp服务代理
服务端口 9611
代理服务1:192.168.2.148:9611 权重5
代理服务2:192.168.2.132:9611 权重1
备机:192.168.6.130 当服务1和服务2失败的时候会使用备机。
打开conf/nginx.conf配置文件,输入如下内容。
stream { upstream backend { # hash $remote_addr consistent; server 192.168.2.148:9611 weight=5 max_fails=1 fail_timeout=30s; server 192.168.2.132:9611 weight=1; server 192.168.6.130:9610 backup; } server { listen 9611 so_keepalive=on; proxy_connect_timeout 10s; proxy_timeout 300s; proxy_pass backend; } }3.nginx搭建https服务器
首先https需要证书,利用openssl可以生成证书请求或生成证书。在linux终端使用openssl命令即可生成。
1、生成RSA密钥的方法
openssl genrsa -des3 -out privkey.pem 2048
这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成:openssl genrsa -out privkey.pem 2048建议用2048位密钥,少于此可能会不安全或很快将不安全。
2、生成一个证书请求
openssl req -new -key privkey.pem -out cert.csr
这个命令将会生成一个证书请求,当然,用到了前面生成的密钥privkey.pem文件
这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。
现在自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书:
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
这个命令将用上面生成的密钥privkey.pem生成一个数字证书cacert.pem
有了privkey.pem和cacert.pem文件后就可以在做一个https服务器。
nginx https服务配置
# HTTPS server
server { listen 443 ssl; server_name localhost; ssl_certificate cacert.pem; ssl_certificate_key privkey.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }测试 :443
再补充一条,一个nginx服务器可以同时代理多个服务。