背景:
最近部署一台测试服务器在外网,主要用于微信等三方对接必须外网环境,然而数据库等依赖均在内网。
方案 1
打通外网服务器到内网VPN,所依赖的内网服务全走VPN到内网,由于数据库多条SQL执行,每次执行都要经历一次外网到内网的延时,速度实在无法忍受。
方案 2
由外网服务器做代理,转发到内网,所有依赖在内网中解决。
做了张简单的图
代理流程图

外网nginx配置
server{
listen 443 ssl;
server_name test.com;
# 此处省略ssl的配置
location / {
# 内网的IP
proxy_pass http://192.168.8.12:81;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
内网nginx配置
server {
listen 81;
server_name localhost;
charset utf-8;
root /var/www/test;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
配置好nginx还需要配置fastcgi参数,这里只列出改动项,根据自己需求更改。
fastcgi_param REQUEST_SCHEME https;
fastcgi_param HTTPS on;
fastcgi_param SERVER_PORT 443;
fastcgi_param SERVER_NAME test.com;