docker安装nginx并配置nginx.conf

拉取nginx镜像 html

docker pull nignx

查看虚拟机内镜像nginx

启动nginx看看是否成功docker

docker run -d --name "nginx" -p 80:80 nginx

启动后打开浏览器访问一下,确认是否可用浏览器

接下来我想修改 nginx.conf 配置文件,咱们须要把咱们本身定义的 nginx.conf挂载在 docker 中的nginxbash

首先建立挂载目录测试

mkdir -p /usr/dokcer_nginx_data/{conf,conf.d,html,log}

自定义 nginx.conf 文件3d

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
              proxy_pass http://39.98.173.195:8080/;
              index  dashboard index;
              proxy_set_header Host       $http_host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
              proxy_set_header X-Forwarded-Proto $scheme;
	    } 
}

注意这里的  proxy_pass 不能设置为 127.0.0.1,须要设置为公网IP,不然nginx没法识别,目前不知是什么缘由,我猜测是docker没法识别127.0.0.1吧代理

文件建立成功后,上传到 /usr/dokcer_nginx_data/conf 目录下日志

如今来经过docker从新启动nginxcode

docker run --name nginx -d -p 80:80  -v /usr/dokcer_nginx_data/conf/nginx.conf:/etc/nginx/nginx.conf  -v /usr/dokcer_nginx_data/log:/var/log/nginx  -v /usr/dokcer_nginx_data/html:/usr/share/nginx/html nginx

第一个-v:挂载nginx的主配置文件,以方便在宿主机上直接修改容器的配置文件

第二个-v:挂载容器内nginx的日志,容器运行起来以后,能够直接在宿主机的这个目录中查看nginx日志

第三个-v:挂载静态页面目录

 

nginx反向代理非80端口的问题

以上是代理一个80端口,咱们再来反向代理其余端口,例如9090

 

修改 nginx.conf

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
              proxy_pass http://39.98.173.195:8080/;
              index  dashboard index;
              proxy_set_header Host       $http_host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
              proxy_set_header X-Forwarded-Proto $scheme;
	    } 
}


 server {
        listen       9090;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
              proxy_pass http://39.98.173.195:8080/;
              index  dashboard index;
              proxy_set_header Host       $http_host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
              proxy_set_header X-Forwarded-Proto $scheme;
	    } 
}

 

为了让配置文件生效,从新启动nginx或者删除nginx容器从新建立

测试发现 

 http://39.98.173.195:8080/docker/findUser 能够访问

 http://39.98.173.195:80/docker/findUser 能够访问

http://39.98.173.195:9090/docker/findUser 没法访问

为何最后一个会没法访问? 缘由未知,可是我找到了解决办法

再启动一个nginx容器,注意端口映射

docker run --name nginx1 -d -p 9090:9090  -v /usr/dokcer_nginx_data/conf/nginx.conf:/etc/nginx/nginx.conf  -v /usr/dokcer_nginx_data/log:/var/log/nginx  -v /usr/dokcer_nginx_data/html:/usr/share/nginx/html nginx

 

部署静态网页

把 html 文件放在 /usr/dokcer_nginx_data/html 文件夹下,稍后映射到 nginx 容器中

更新 nginx.conf

server {
         listen       8088;
         server_name  localhost;

         location / {
             root   /usr/share/nginx/html/;
             index  index.html index.htm;
         }
     }

启动一个新的 nginx 

docker run --name nginx1 -d -p 8088:8088 -v /usr/dokcer_nginx_data/conf/nginx.conf:/etc/nginx/nginx.conf  -v /usr/dokcer_nginx_data/log:/var/log/nginx  -v /usr/dokcer_nginx_data/html:/usr/share/nginx/html  nginx

打开浏览器访问便可

注意:有的人会遇到监听 80  端口访问 html 时候,报错 404 ,确认配置文件无误后,缘由是:

Nginx的docker容器中,有一个默认配置文件 /etc/nginx/nginx.conf 。还有一个默认放配置文件的目录 /etc/nginx/conf.d。nginx 会加载目录conf.d 下的 *.conf 文件。若是这些 .conf 文件的内容和 /etc/nginx/nginx.conf 文件有冲突,那么nginx会默认用 conf.d 目录下的文件配置去覆盖 nginx.conf 文件里面的配置。nginx 容器的 conf.d 目录下有个 default.conf 配置文件。
 

首先 进入容器

docker exec -it  容器ID /bin/bash

删除该文件,从新启动便可

rm default.conf
相关文章
相关标签/搜索