映射80端口如何使用nginx配置两个tomcat?
服务器是Windows ,已映射80端口,现有两个tomcat实例,例如实例A端口为8081,实例B端口为8082,需要共用80端口;假设本地地址localhost为 192.16.10.10;
该如何配置 nginx.conf?
现我 nginx.conf 配置如下:
http{
.........
server{
listen 80;
server_name 192.16.10.10:8081;
location / {
proxy_pass http://localhost:8081
}
}
server{
listen 80;
server_name www.acdf.com;
location / {
proxy_pass http://localhost:8082
}
}
}
我的疑问:
1.需要两个tomcat实例共用 80 端口,是不是 监听 listen 都为 80 ?
2.nginx 是怎样根据请求地址 来正则匹配 到不同的 虚拟主机的?我的理解是申请两个域名 都绑定到我映射的同一 ip,然后在不同的 server{} 中的 server_name 填入两个域名,通过域名匹配再转到本地的 http://localhost:8081
3.就是 server_name ,这个到底是什么意思,该怎么填写?网上有说填 localhost 的,也有 像我第一种配置直接写ip:port 192.16.10.10:8081 的。如果是这种ip:port 方式的话,我的前端请求地址该如何写,是直接写我映射的地址 http://192.16.10.10 还是 http://192.16.10.10:8081 ? 但是这样写的话,我监听的 80 端口还有作用吗? 我的 server_name 又该怎样写?
请各位大神们不惜赐教。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
reuse port
引用来自“车开源”的评论
用域名不是很好解决吗?
server{
listen 80;
server_name www.a.com;
location / {
proxy_pass http://localhost:8080
}
}
server{
listen 80;
server_name www.b.com;
location / {
proxy_pass http://localhost:8082
}
}
刚刚才发现按我那样的配置其实是可以外网访问的,但还是不懂 listen 与 server_name 的含义,谢谢大神了
server {
listen 443 ssl;
server_name xxx.xxx.com;
ssl_certificate zsserver.crt;
ssl_certificate_key zsserver.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8085;
}
}
好了,加到那个server下面
引用来自“geminiblue”的评论
这叫最简单的负载均衡,连权重都不用配置。。。
这不就是基于域名的虚拟主机么?
server_name 基于域名即可
简单粗暴。 如果要根据访问的路径跳转的话。 可以考虑使用正则。
大神,我已有微信在 80 端口,手机 app 的tomcat 端口 是8085, 如何配置 将 app 也开放到 80 端口?
这叫最简单的负载均衡,连权重都不用配置。。。
用域名不是很好解决吗?
server{
listen 80;
server_name www.a.com;
location / {
proxy_pass http://localhost:8080
}
}
server{
listen 80;
server_name www.b.com;
location / {
proxy_pass http://localhost:8082
}
}