本文主要是介绍nginx和tomcat共同使用80端口(通过反向代理实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在服务器搭起nginx后发现,nginx使用的默认为80端口,而前不久刚刚把自己的tomcat配置改为80端口并绑定域名,所以造成了nginx无法启动的情况,具体报错信息为
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
想到给域名后面加上端口号并不合理,于是采用了nginx反向代理来解决这一问题,具体解决方案如下:
1.首先将tomcat改为8080端口(具体细节不再阐述,可自行百度)
2.在nginx的安装目录下 (我的目录是 /usr/local/nginx )创建一个新的文件夹 vhosts,然后在vhosts文件夹下创建一个tomcats.conf文件
tomcats.conf文件内容如下:
server {listen 80;server_name xx.xx.xx.xx;(想要设置的访问地址)#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://xx.xx.xxx.xxx:8080;(现在想要设置的路径的访问地址)root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
}
3.打开nginx安装目录下的conf下的nginx.conf文件
4.在文件底部加上
include /usr/local/nginx/vhosts/*; (包含所有虚拟机主机文件,加在最后那个大括号前面)
5.然后在文件中间找到
location / {proxy_pass http://xx.xx.xxx.xxx:8080; (加上这个,指定自己本机的tomcat的地址)root html;index index.html index.htm;}
重启tomcat,nginx
另外补上一点,其实nginx一般是不用重启的,它可以通过与-s参数调用可执行来控制
nginx -s signal
其中,信号可以是下列之一:
stop — fast shutdown
quit — graceful shutdown
reload — reloading the configuration file
reopen — reopening the log files
在配置文件中所作的更改不会被应用,直到命令重新配置被发送到nginx的或重新启动。要重新加载配置,执行:
nginx -s reload
如果非要重新启动或停止,可采用下面的方法
从容停止
1、查看进程号
ps -ef|grep nginx
2、杀死进程,注意一共有三个进程,一定要杀死后面带master的进程id
kill -QUIT xxxx
快速停止
1、查看进程号
ps -ef|grep nginx
2、杀死进程
kill -TERM 2132
或
kill -INT 2132
强制停止
pkill -9 nginx
在操作过程中遇到一个坑:
配置nginx 反向代理的时候出现了
nginx: [emerg] invalid URL prefix in /usr/local/nginx/conf/nginx.conf
这个错误,意思是nginx配置的URL地址前缀不正确,后来重新看了下,发现的确是前缀没有写好,正确写法如下:
然后重启nginx服务,发现一切符合正常情况。
这篇关于nginx和tomcat共同使用80端口(通过反向代理实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!