一、nginx安装在服务器,本机运行服务,如何使用远程nginx代理本机服务?
- 打开nginx配置文件,位置:/usr/local/nginx/conf/nginx.conf,在http模块中添加以下server代码段:
http {server {listen 18088; server_name localhost; # 服务器地址172.40.252.38location / {proxy_pass http://172.39.128.90:18088; # 目的IP地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}
- server_name默认为localhost,不用修改,实际为服务器地址。它将监听端口18088。
- 在location /段中,我们将请求代理到本地主机的端口18088上。注意,proxy_pass指令的参数应该是代理服务器的URL,此处为本机的ip地址(对于服务器就是代理的目标IP地址)。
- 添加了一些代理头,如Host,X-Real-IP和X-Forwarded-For,以确保代理服务器可以正确地处理请求。
- 保存配置文件,进入sbin文件夹,-t命令验证配置文件是否正确,显示ok和successful则表示配置文件语法没问题。
cd /usr/local/nginx/sbin
./nginx -t
- 重启nginx
./nginx -s reload
- 本地机运行idea项目,springboot启动服务,浏览器中输入网址能获取数据信息:http://172.39.128.90:18088/pms-production-command-center/dict/listAll,服务启动成功。
- 使用nginx服务代理访问该服务,在浏览器中输入:http://172.40.252.38:18088/pms-production-command-center/dict/listAll,访问成功,获取数据。
二、同一个服务,实际项目发给不同的线下环境进行测试或生产需要加后缀,配置文件中如何处理?(不同的机器,不同的生产环境,不同的服务)
需求:服务没有-test,添加-test后缀请求转发给另一台机器,且能访问原服务,另一台机器IP地址172.39.128.237,不带后缀的服务本机依然可以访问。
- 打开配置文件,添加location模块
http {server {listen 18088; server_name localhost; # 服务器地址172.40.252.38location /pms-production-command-center-test {proxy_pass http://172.39.128.237:18088/pms-production-command-center; # 目的IP地址proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location / {proxy_pass http://172.39.128.90:18088; # 本机IP地址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
- 启动服务,访问http://172.39.128.90:18088/pms-production-command-center/dict/listAll,能够获取数据信息,启动成功。
- 本机浏览器访问http://172.40.252.38:18088/pms-production-command-center/dict/listAll,能够获取数据信息,nginx代理成功。
- 另一台机器访问http://172.40.252.38:18088/pms-production-command-center-test/dict/listAll,能够获取数据信息,nginx代理另一台机器成功。
三、Nginx简单访问静态资源
目录下存放图片
/usr/data/images/pic.png
配置文件添加location
location / images{root /usr/data;try _files $uri $uri=404; # 找不到文件报错404}
访问http://172.40.252.38:18088/images/pic.png,显示图片访问成功
四、Nginx代理网关
开通服务器中的网关,通过网关端口19000访问服务:http://172.40.252.38:19000/pms-production-command-center-test/dict/listAll,报错404?
404页面未找到两种情形
-
网关没权限,找不到服务 (带-test)
-
找到服务(服务名正确),sci权限登陆成功,再访问,请求地址拼写错误或者验证信息错误(token令牌:_rt),例如访问的是:http://172.40.252.38:19000/pms-production-command-center-test/dict/listAllaaa
通过nginx代理网关,访问服务,nginx配置文件
网关ip地址就是服务器地址,只是提供一个权限端口访问
http {server {listen 18088; server_name localhost; # 服务器地址172.40.252.38location / {proxy_pass http://172.40.252.38:19000; # 网关IP地址与端口19000proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}
502错误
- 网关关闭
超时504-gateway timeout
- nginx–网关–服务,下游服务处理时间过长,超时
- 前置服务–niginx–网关–服务,前置服务设置12秒超时,来回响应时间超时