前言
前段时间给朋友开发网站, 上线几个月后想要接入支付宝在线支付. 支付宝接口申请需要给一个已经上线的网站. 由于一些原因, 朋友的网站没有申请通过, 现需用B2C网站做申请之用. 但是已上线的站点不能停用, 本着节约成本的原则, 我拒绝了他再去租用一台云服务器. 之前接触过一点点nginx, 便想通过nginx实现同一台云服务器/相同端口(80)通过域名做请求转发.
准备工作
- 准备nginx, nginx-1.12.2
- 准备sunny ngrok, 并下载相应客户端版本, 用于模拟两个域名
- 准备两个服务器(当前环境:Tomcat7.0.59 & php7+apache2.4), 也可以使用两个tomcat服务器
配置内网穿透
在sunny ngrok申请两个账号, 同时映射到 localhost:8081:
并在本地启用内网穿透:
配置nginx
将hyong.free.ngrok.cc和hyong2.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 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"
启动服务器
视情况而定, 当前启动 Tomcat&Apache
测试验证
访问 http://hyong.free.ngrok.cc
访问 http://hyong2.free.ngrok.cc
漂亮: 测试通过!!!
总结
- nginx并未使用在真实项目中, 因此对nginx并未深入研究
- 除了负载均衡(个人觉得应该叫并发瓶颈转移), 还可以做请求转发
- 经过本次测试, 发现nginx还具有端口路由的功能. 此后做web开发时, 就可以同时对外提供多个相同端口的不同服务了 ^ - ^