nginx监听相同端口通过域名分发到不同的服务器

前言


前段时间给朋友开发网站, 上线几个月后想要接入支付宝在线支付. 支付宝接口申请需要给一个已经上线的网站. 由于一些原因, 朋友的网站没有申请通过, 现需用B2C网站做申请之用. 但是已上线的站点不能停用, 本着节约成本的原则, 我拒绝了他再去租用一台云服务器. 之前接触过一点点nginx, 便想通过nginx实现同一台云服务器/相同端口(80)通过域名做请求转发.

准备工作


  1. 准备nginx, nginx-1.12.2
  2. 准备sunny ngrok, 并下载相应客户端版本, 用于模拟两个域名
  3. 准备两个服务器(当前环境:Tomcat7.0.59 & php7+apache2.4), 也可以使用两个tomcat服务器

配置内网穿透


在sunny ngrok申请两个账号, 同时映射到 localhost:8081:
nginx监听相同端口通过域名分发到不同的服务器_第1张图片
nginx监听相同端口通过域名分发到不同的服务器_第2张图片
并在本地启用内网穿透:
nginx监听相同端口通过域名分发到不同的服务器_第3张图片

配置nginx


hyong.free.ngrok.cchyong2.free.ngrok.cc监听端口同时映射到8081(与SunnyNgrok配置一致即可)

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include             mime.types;
    default_type        application/octet-stream;
    sendfile            on;
    keepalive_timeout   65;

    #gzip  on;

    # 配置第一个代理规则
    # 域名: hyong.free.ngrok.cc
    # 监听端口: 8081
    server {
        listen              8081;
        server_name         hyong.free.ngrok.cc;
        location / {
            root            I:/php/httpd-2.4.26-Win64-VC15/Apache24/htdocs;
            index           index.php index.html;
            proxy_pass      http://127.0.0.1:8080;
        }
    }

    # 配置第二个代理规则
    # 域名: hyong2.free.ngrok.css
    # 监听端口: 8081, 端口与第一个规则相同
    server {
        listen              8081;
        server_name         hyong2.free.ngrok.cc;
        location / {
            root            I:\java-working\server\apache-tomcat-7.0.59;
            index           index.jsp index.html;
            proxy_pass      http://127.0.0.1:9000;
        }
    }
}

接下来启动nginx中文网:
启动nginx
nginx for windows相关命令
cmd> cd nginx_home:

命令 说明
start nginx 后台启用nginx, 前台启动(cmd>nginx.exe)
nginx -s stop 快速停止
nginx -s quit 安全停止
nginx -s reload 改变配置,开始新的工作进程与新配置,优雅的关闭旧的工作进程
nginx -s reopen 重启, 重启日志文件

校验nginx启动是否成功: tasklist /fi "imagename eq nginx.exe"
nginx监听相同端口通过域名分发到不同的服务器_第4张图片

启动服务器


视情况而定, 当前启动 Tomcat&Apache

测试验证


访问 http://hyong.free.ngrok.cc
nginx监听相同端口通过域名分发到不同的服务器_第5张图片

访问 http://hyong2.free.ngrok.cc
nginx监听相同端口通过域名分发到不同的服务器_第6张图片

漂亮: 测试通过!!!

总结


  1. nginx并未使用在真实项目中, 因此对nginx并未深入研究
  2. 除了负载均衡(个人觉得应该叫并发瓶颈转移), 还可以做请求转发
  3. 经过本次测试, 发现nginx还具有端口路由的功能. 此后做web开发时, 就可以同时对外提供多个相同端口的不同服务了 ^ - ^

如果发现本文内容有误, 欢迎留言讨论…

你可能感兴趣的:(nginx)