很多时候,和第三方接口联调测试,对方会有ip白名单的要求,那么可以使用ng来转发,比如在一台阿里云服务器上装nginx,阿里云开放8085端口
一、在ng的配置文件nginx.conf里的http里加上 include /etc/nginx/conf.d/*.conf; 隔离开各种不同的配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
fastcgi_buffers 8 128k;
keepalive_timeout 65;
#gzip on;
server_names_hash_bucket_size 512;
include /etc/nginx/conf.d/*.conf;
}
二、新建一个conf.d目录,再新建一个my.conf文件,文件里设置监听8085端口,这样子别人访问阿里云服务器的ip:8085就会被转发转发到https://xxxxx.com,比如访问ip:8085/open/xx.do就会被转发到https://xxxxx.com/open/xx.do
server {
listen 8085; # 改为监听本地 8085 端口,且不启用 HTTPS
server_name localhost; # 可选,也可以保留原域名或设为任意值
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://xxxxx.com; # 转发到 HTTPS 地址
proxy_set_header Host proxytest.sinosafe.com.cn; # 设置 Host 头为目标域名
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; # 如果后端需要识别协议类型
proxy_ssl_server_name on; # 启用 SNI,确保目标服务器能识别域名
proxy_ssl_verify off; # 开启证书验证(生产环境建议开启)
}
access_log logs/ha.com_access.log;
}
或者配置https域名的
server {
listen 443 ssl;
server_name xxx.com;
ssl_certificate "/etc/nginx/key/xxx.com.pem";
ssl_certificate_key "/etc/nginx/key/xxx.com.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /var/www/html;
location / {
try_files $uri $uri/ @proxy;
}
location @proxy {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8086;
}
access_log logs/xxx.com_access.log;
}
除了我们访问对方有白名单,对方访问我们的话,如果也要做转发,那么我推荐使用frp内网穿透,可以打成 对方访问代理服务器,代理服务器转发到我们本地或者任意一台装了frp客户端的服务器。
一、在一台可以外网访问的服务器上,例如阿里云服务器上装一个frp服务端,修改frps.ini(具体的可以去网上找找frp穿透怎么做的),修改完后启动服务端
[common]
# 服务端通信端口
bind_port = 7000
dashboard_port = 7500
dashboard_user = xx
dashboard_pwd = xxx
vhost_http_port = 80
vhost_https_port = 443
max_pool_count = 50
token = xx
tcp_mux = true
log_file = /app/frp/frps.log
log_level = info
log_max_days = 3
authentication_timeout = 0
subdomain_host = tieniu.xin
privilege_mode = true
二、在本地安装一个frp客户端,修改frpc.init,然后启动(这样子本地就会连上阿里云服务器上的frp),别人访问阿里云服务器某个端口,就会被转发到本地。
[common]
server_addr = 47.122.xx.xx
server_port = 7000
token = xx
[web]
type = http
local_port = 8088
custom_domains = tieniu.xin
除了上面说的我们访问别人白名单,或者别人访问我们的这两种情况外,或许还会有一种情况,就是对接方的某个网站也需要白名单才能访问,这时候我们可以使用浏览器的SwitchyOmega插件来代理ip,可以达成把我们浏览器的ip代理成阿里云服务器的ip。
一、编辑阿里云 服务器SSH 配置文件,sudo vi /etc/ssh/sshd_config,确保这两个参数是yes,
之后重启ssh服务, sudo systemctl restart sshd
AllowTcpForwarding yes
GatewayPorts yes
二、本地命令行运行 ssh -D 1080 -C -N 阿里云用户名@阿里云ip,开放本地1080端口代理
三、打开浏览器,在SwitchyOmega插件中,新建一个场景
之后浏览器中会有这个插件选项,直接链接就是不启用这个插件代理,如果选择了我们前面新疆的场景代理,那我们浏览器的ip就会被代理成阿里云服务器的ip
最后,进入百度搜索ip,可以看到本机ip,如果显示出来的是阿里云的ip,那么就证明浏览器代理ip成功了。