当我们启动一个go 程序的时候,通常监听的是本地端口如 IP:port 。但是实际的线上环境,解析路径是:通过 DNS 解析 ——> nginx vhost ——> IP:port 这个。单纯的使用 go 是不能处理 域名解析工作的。 所以通常是NGINX 和 Go 搭配着使用。

nginx 可以帮我做很多工作,例如访问日志,cc 攻击,静态服务等,nginx 已经做的很成熟了。 Go 只要专注于业务逻辑和功能就好。 NGINX作为反向代理的配置如下:

#列出所有服务器地址,nginx 自动均衡分发请求到各个服务器。 
upstream frontends {   
    ip_hash; 
    server 192.168.199.1:8088;
    server 192.168.199.2:8089;
}
server
    {
        listen 80;
        server_name nav.v5u.win ;

	#静态资源交由nginx管理
   	 location /static {
        root        /var/www/mydomain/web;
        expires     1d;
        add_header  Cache-Control public;
        access_log  off;
    	}

		# 反向代理设置
		location ~ /
			{
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_set_header Host $http_host;
				proxy_redirect off;
				proxy_pass http://localhost:7070;
			}
	}