网站首页 > 精选教程 正文
前因后果就不说了,就是用到了重定向,然而在项目是使用Nginx的反向代理,然后问题就来了,在访问项目地址的时候,页面报出503 service Unavailable,检查了一下路径,发现路径中端口号没有了,例如122.51.157.193:9099直接就变成了122.51.157.193,百思不得其解!
??因为种种原因,Nginx并不能监听在80端口,或者外部通过NAT方式将请求丢给Nginx,外部地址并不是标准http(s)端口,此时Nginx并不能美好的处理这些重定向。发生重定向的时候会丢失端口。
#反向代理
listen 81 default_server;
set $TOMCAT_HOME /var/lib/tomcat7;
location / {
root $TOMCAT_HOME/webapps/ROOT;
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 访问/data的时候会自动加上/成为/data/
listen 81 default_server;
location /data {
root /var/data;
}
处理
这个很容易搞定,网上流传开来的proxy_set_header对此不起作用。后来我发现gitlab-ce这个用非标准端口访问是没有问题的,我看了一下gitlab-ce的nginx配置,发现是这么配置的:
proxy_set_header Host $http_host;
我又发现nginx软件包释放出的配置文件(from ppa: NGINX Stable),发现里面其实是带有一个参考文件/etc/nginx/proxy_params
proxy_set_header Host $http_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_set_header Host $http_host;,于是乎直接include,搞定
location / {
root $TOMCAT_HOME/webapps/ROOT;
proxy_pass http://127.0.0.1:8080/;
include proxy_params;
}
没这个文件就把这些内容手工敲到location配置段下。
再细看官方文档,其实也提及了:
An unchanged “Host” request header field can be passed like this:
proxy_set_header Host $http_host;
- 上一篇: windows查找管理端口常用命令
- 下一篇: Nginx系列:https配置
猜你喜欢
- 2024-09-22 nginx监听多域名的80端口
- 2024-09-22 如何在Ubuntu上检查、开启、关闭端口?
- 2024-09-22 Windows使用nginx时,端口被占用怎么办?
- 2024-09-22 nginx配置多个站点使用同一端口
- 2024-09-22 nginx如何设置多端口访问
- 2024-09-22 负载均衡之session共享的三种处理方法
- 2024-09-22 漫画:Apache Nginx80 端口争夺战
- 2024-09-22 Linux查看被占用的端口
- 2024-09-22 Nginx总结(三)基于端口的虚拟主机配置
- 2024-09-22 负载均衡session共享的三种处理方法
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)