当前位置:首页 > 技术文章 > 正文内容

nginx代理web服务(http、https)和tcp服务

arlanguage4个月前 (01-07)技术文章25


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 http://tomcatserver/usercenter;
}

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;
				}
}

测试 https://192.168.6.130:443


再补充一条,一个nginx服务器可以同时代理多个服务。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/663.html

分享给朋友:

“nginx代理web服务(http、https)和tcp服务” 的相关文章

Nginx配置七层负载均衡

Nginx 一般用于七层负载均衡,其吞吐量有一定限制。为了提升系统整体吞吐量,会在 DNS 与 Nginx 之间引入接入层,比如使用LVS(软负载均衡器)、F5(硬负载均衡器)做四层负载均衡。整体的请求流转如下图所示,即首先 DNS 解析到 LVS/F5,然后 LVS/F5 转发给 Nginx,再由...

nginx知识梳理及配置详解

nginx安装#nginx安装 yum -y install gcc pcre-devel openssl-devel #依赖包 useradd -s /sbin/nologin nginx ./configure --prefix=/usr/local/nginx #...

到 2024 年了,全球仍有 76.4% 的网站在用「已死」的 PHP!

如今资历稍长的程序员,提到 PHP 可能都会联想到一个梗:“PHP 是最好的语言。”这个梗并非出自别处,正源自于 PHP 自己的官方文档:早在 2001 年 7 月,PHP 文档中就有一句“PHP is the best language for web programming(PHP 是世界上最好...

了解PHP-FPM

在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢?PHP-FPM简介PHP-FPM,就是PHP的FastCGI管理器,用于替换PHP FastCGI的大部分附加功能,在PHP5.3.3后已经成为了PHP的标配。有小伙伴要问了...

405状态码Nginx解决办法

最近由于业务系统并发量比较大,所以在已有负载均衡的基础上,我们做了Nginx动静分离,但是系统访问后报错,经过F12(浏览器开发者模式)和Nginx日志分析,发现请求状态变成了405,故百度解释如下:问题原因: 请求的方式(get、post、delete)方法与后台规定的方式不符合。比如: 后台方...

Java基础教程:k8s快速入门 k8s jmeter

介绍容器化部署随着Docker技术的流行,对项目的容器化部署方式越来越流行,容器化部署的优点如下:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署虽然容器化部署可以...