在服务器搭起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和tomcat共同使用80端口(通过反向代理实现)_html


然后重启nginx服务,发现一切符合正常情况。