请问nginx监听非80端口怎么通过域名直接访问

重拾
  • 37

具体情况是这样,服务器之前的项目用的是tomcat的,已经占用了80端口,之前的项目有一个自己的域名。现在我想部署的服务也有一个自己的域名。现在nginx怎么配置可以通过新域名访问我的项目。目前我监听的是443端口,但是访问的时候都要带上端口,所以说怎么配置可以直接通过域名访问?
另外如果想监听80端口,会不会对原来的tomcat项目有影响?nginx可以代理tomcat,但是具体细节我不太懂,会不会要重新配置,会不会重启,因为那个是其他学院的项目,比较老旧,所以我也不敢轻易动。另外学院的服务器是windows server 2008(垃圾)

回复
阅读 1.9k
3 个回答
现在nginx怎么配置可以通过新域名访问我的项目。

https://nginx.org/en/docs/beg...

目前我监听的是443端口,但是访问的时候都要带上端口,所以说怎么配置可以直接通过域名访问?

访问服务是必须要IP+端口才能指定目的地址的。因为http协议默认是80端口,所以即使不写端口也会自动加上。443端口对应的是https(ssl)的协议。
你监听的443端口,提供的协议是什么呢?
如果是http协议,那么必须在访问时写上协议头和端口。而且如果向公网提供服务且流量大的话,容易被ISP阻断。
如果是https协议,那么需要配置好对应的服务器证书和密钥。
https://nginx.org/en/docs/htt...

另外如果想监听80端口,会不会对原来的tomcat项目有影响?

同个端口的句柄只能被同一程序占用。在Linux中有端口复用的方式。但看你的描述,是Windows Server,那就应该是不行。两套程序必须占用不同端口。
如果只是纠结80端口的话,可以Nginx监听80端口,其他服务监听其他端口,Nginx做代理。

nginx可以代理tomcat,但是具体细节我不太懂,会不会要重新配置,会不会重启

如果Nginx监听80端口的话,Tomcat必须使用其他端口,所以一定会重启。
代理配置详情查看 https://nginx.org/en/docs/beg... 中的 Setting Up a Simple Proxy Server 章节。

因为那个是其他学院的项目,比较老旧,所以我也不敢轻易动

如果你不敢动的话,建议你换台机器部署。因为不仅重启可能导致原程序无法正常运行,也可能会因为你部署的新项目占有资源的问题导致其他程序挂起。

边城
  • 55.5k

端口只能给一个进程使用,如果 Tomcat 已经占用了,那 Nginx 就没办法通过 80 端口提供服务。

不过 Nginx 既然是一款代理软件,是可以代理原来的 Tomcat 服务以及新加的服务的。

期望目标是通过 80 提供服务,通过域名来区分对哪个服务进行访问

  1. 修改 Tomcat 的服务端口,改为 8080
  2. 在 Nginx 对 Tomcat 服务做反向代理,listen 80,server_name a.domain.cn
  3. 在 Nginx 对新服务做反向代理(或直接服务),配置另一个 server,listen 80,server_name b.domain.cn

顺便说一句,443 是 https 的默认端口,也可以配置成 server,做反向代理来代理上述服务,但需要配置 listen 443 ssl,而且需要配置证书。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏