Nginx部署GO语言应用程序 您所在的位置:网站首页 nginx服务使用什么语言好 Nginx部署GO语言应用程序

Nginx部署GO语言应用程序

#Nginx部署GO语言应用程序| 来源: 网络整理| 查看: 265

文章目录 Nginx部署GO语言应用程序Nginx是什么名词解释 Nginx的安装Nginx常用命令Nginx部署具体步骤配置主机HOSTS文件配置nginx.conf启动GO语言应用程序重新启动nginx使用POSTMAN测试代理是否成功配置负载均衡(修改nginx.conf文件)再次重新启动nginx 总结

Nginx部署GO语言应用程序

使用nginx部署go语言应用程序实现反向代理和负载均衡

Nginx是什么

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,可以用于负载均衡、邮件代理、TCP/UDP、HTTP服务器等等 ,其特点如下:

正向、反向代理负载均衡支持TLS/SSL与SNI和OCSP支持Websocket、HTTP/1.1协议 名词解释

正向代理:正向代理服务器,用户可以知道Web服务的数据库等系统的IP地址和端口号等敏感息,由于暴露了这些关键信息,容易遭受到恶意攻击所以安全性比较差。 正向代理的典型应用就是为火墙内局域网局域网客户端提供访问Internet的途径。其次使用正向代理还可以实使用缓冲特性减少网络使用率以及权限验证等功能,如上网权限。 一般对于企业内部管理系统,使用正向代理的方式,释放专门的网络带宽,特定域名实现某些功能只能有部分员工有权限访问 反向代理:反向代理用到了反向代理服务器,使用反向代理,典型的应用是将防火墙后面的服务器提供给Intenet用户访问,隐藏了Web应用服务,如数据库的IP地址、端口号等信息,提高了系统的安全性等。同时使用反向代理还可以实现多台服务器的负载均衡,启用高级的URL和管理技术,使处于不同Web服务器系统的Web界面同时存在一个URL空间下,提高系统性能。 对于互联网行业,如理财应用,为实现系统的安全性,采用反向代理的方式,对用户隐藏的后台应用的部署方式、结构等敏感信息,提供一个统一的域名给用户访问。

简而言之,Nginx就是一款代理服务器,用于客户端和服务器之间建立一个统一域名的映射关系,就如同你输入的https:\\www.baidu.com,先由域名解析服务DNS解析出IP地址,然后访问这个IP地址,这个IP地址是代理服务器,代理服务器和具体的应用服务器之间建立好了映射,以此实现反向代理和负载均衡。

Nginx的安装

安装步骤请移步百度或者谷歌,安装好Nginx以备后续使用

Nginx常用命令 nginx:启动nginxnginx -s stop:立即停止nginx服务nginx -s reload:重新加载配置文件nginx -s quit:平滑停止nginx服务nginx -t:测试配置文件是否正确nginx -v:显示nginx版本信息nginx -V:显示更加详细的nginx版本信息 $ nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

可见配置文件在/user/local/etc/nginx/目录下,并且测试通过

Nginx部署具体步骤 配置主机HOSTS文件

由于所有的演示都在一台物理机上,先配置一个域名和地址映射关系,打开etc/hosts,(假设我们服务的域名为api.test.com)增加内容:

127.0.0.1 api.test.com 配置nginx.conf

打开nginx的配置文件nginx.conf(示例中的是/user/local/etc/nginx/nginx.conf),增加server内容,设置监听端口为8081,服务名字为api.test.com,所有的路径请求都会转发到http://127.0.0.1:8000/下(正式环境下,转发到具体的业务服务器)

worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8081; server_name api.test.com; location / { proxy_pass http://127.0.0.1:8000/; } } } 启动GO语言应用程序

实验中使用的是一个rpc服务,监听在主机的8000端口下,执行./main,将自己的服务启动起来,使用lsof命令查看服务是否启动成功:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME main 18844 root 11u IPv6 321415996 0t0 TCP *:8000 (LISTEN)

可见服务已经正常启动

重新启动nginx $ nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful $ nginx -s reload 使用POSTMAN测试代理是否成功

请求RPC服务 如果能得到正确响应,说明反向代理成功,8081下的请求被转发到了8000端口下

配置负载均衡(修改nginx.conf文件)

负载均衡:ngnix作为代理服务器,其背后一般有多台 server,系统会根据配置的策略(例如 Nginx 有提供四种选择)来进行动态调整,尽可能的达到各节点均衡,从而提高系统整体的吞吐量和快速响应。 部分配置选择: 1、 proxy_pass:配置反向代理的路径。需要注意的是如果 proxy_pass 的 url 最后为 /,则表示绝对路径。否则(不含变量下)表示相对路径,所有的路径都会被代理过去 2、 upstream:配置负载均衡,upstream 默认是以轮询的方式进行负载,另外还支持四种模式,分别是: (1)weight:权重,指定轮询的概率,weight 与访问概率成正比 (2)ip_hash:按照访问 IP 的 hash 结果值分配 (3)fair:按后端服务器响应时间进行分配,响应时间越短优先级别越高 (4)url_hash:按照访问 URL 的 hash 结果值分配

首先启动两个不同的GO应用服务,可以将原来的服务端口修改一下为8001,再启动一个,这样两个RPC服务各自监听在8000和8001端口下,然后增加负载均衡所需的配置。新增 upstream 节点,设置其对应的 2 个后端服务,最后修改了 proxy_pass 指向(格式为 http:// + upstream 的节点名称):

worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream api.test.com { server 127.0.0.1:8000; server 127.0.0.1:8001; } server { listen 8081; server_name api.test.com; location / { proxy_pass http://api.test.com/; } } } 再次重新启动nginx $ nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful $ nginx -s reload

目前 Nginx 没有进行特殊配置,那么它是轮询策略,多次重复访问http://api.test.com:8081/auth?username=test&password=123456,让后通过lsof命令查看8000和8001端口连接数量就可以发现,负载均衡是否设置成功

总结

以上就是在Linux环境下利用Nginx部署GO语言应用程序实现反向代理和负载均衡的例子,希望对你有所帮助。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有