今天我们就来做一个nginx的实战操作,实现反向代理tomcat服务器,没有安装nginx和tomcat的小伙伴,可以参看我之前的文章。我们要做的效果是,使用客户端访问nginx的9001端口时,自动跳转到tomcat的8002端口的应用。
- 安装nginx
- 安装tomcat
一切准备就绪后,使用docker 启动nginx。
# docker run --name mynginx -p 9001:80 -d nginx
确认nginx启动成功
# docker ps -a
出现下边的信息时,说明nginx启动成功,尤其是STATUS的状态是UP,同时确认tomcat的8002端口正常启动,下边粗体内容是tomcat的启动信息,如果没有这两条数据的话,或者状态不对是,请使用docker log 容器名的命令调试。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70b5042c7536 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:9001->80/tcp mynginxf938cd3871e4 tomcat "catalina.sh run" 28 hours ago Up 8 hours 0.0.0.0:8002->8080/tcp mytomcat1
由于nginx被安装到docker容器中,想要修改nginx的配置文件,必须从docker容器中拷贝出来,修改完后,在拷贝回去。
首先我创建了工作文件夹
# mkdir -p /usr/local/nginx
进入工作文件夹
# cd /usr/local/nginx
从docker容器的nginx中,拷贝出nginx.conf配置文件
# docker cp mynginx:/etc/nginx/nginx.conf nginx.conf
使用vi命令修改配置文件,保存并退出
vi nginx.conf
下边修改的nginx.conf配置文件中粗体部分是添加的内容,需要注意的是,192.168.100.101是我虚拟机的ip,这里按照大家实际的ip修改,proxy_pass http://192.168.100.101:8002; 这里是反向代理的tomcat的ip和端口
nginx.conf
user nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 192.168.100.101;
location / {
proxy_pass http://192.168.100.101:8002;
index index.html index.htm;
}
}
include /etc/nginx/conf.d/*.conf;
}
这里的listen 80;的80是你在用(docker run --name mynginx -p 9001:80 -d nginx)启动的冒号后的80端口
修改完后,将nginx.conf拷贝回docker容器中的nginx里
# docker cp nginx.conf mynginx:/etc/nginx/nginx.conf
重启nginx服务器
# docker restart mynginx
做到这里,使用客户端(ie浏览器)访问虚拟机IP(http://192.168.100.101:9001)时,就会自动跳转到tomcat8002端口的自定义页面。