场景:
以下都是基于windows系统(ip为虚构)
1.ip:172.16.54.55需要访问172.16.54.57的接口服务,来查看机械臂的运行状况
2.存在网络隔离,172.16.54.55无法直接访问172.16.54.57
3.172.16.54.56与172.16.54.57是机械臂厂商搞得内部网络,彼此可以互通
4.172.16.54.55与172.16.54.56是外部网络,彼此可以互通
需求设计:
在172.16.54.56装一个nginx服务,进行请求转发
实操:
1.nginx服务的nginx.conf配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name 172.16.54.56;
location / {
proxy_pass https://172.16.54.57;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST';
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_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
以上两个问题需要解决:
1.跨域 因为访问172.16.54.56的是http请求,转发到172.16.54.57是https请求。存在跨域问题。
什么是跨域? http:ip:port(协议/ip(域名)/端口 三者只要有一个不一致,即存在跨域问题)
可以添加配置:
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
说明: *针对所有的ip请求 也可以指定某个例如:
add_header Access-Control-Allow-Origin http://172.16.54.56; #不写端口默认是80
2. proxy_pass https://172.16.54.57: #https请求默认端口是443 一定不要写默认端口 如果是非443端口,可以填 例如:proxy_pass https://172.16.54.57:8893
补充:
因为nginx必须要开机自动启动,可以将nginx加入到windows服务中。
参考以下配置:
windows下快速安装nginx 并配置 开机自启动 - 腾讯云开发者社区-腾讯云 (tencent.com)