nginx所有的配置都在它的配置文件里。而我们不能每次都进入我们的docker环境一点点的改。,我们更希望它的配置文件在一个更方便修改的地方。所以一般我们会把这个配置文件,放在我们的宿主机上。这样我们改起来会更方便一些。
14-10 Docker之Nginx安装
首先来安装Nginx。它的包比较小,所以下载应该比较快。

sudo docker pull nginx:拉取nginx 的镜像
14-10 Docker之Nginx安装

docker images | grep nginx: 查看docker的镜像 并搜索 一个叫做nginx

14-10 Docker之Nginx安装


我们在docker pull的时候没加版本号的话,安装的版本就是latest 如果加了版本号的话 ,下载的就是对应版本号的。 
14-10 Docker之Nginx安装
下面我们去创建这几个目录,
14-10 Docker之Nginx安装
Nginx有个配置文件的目录就是conf目录,是我们正常要去使用的一个文件目录,一般我们在生产环境上部署的时候,大部分情况下我们都会以这种子配置文件的形式去配置我们具体的不同的后端服务,我们这次不是很多嘛 ,有 img、admin、console、还有www等很多的后端服务,这个时候我们会以为子配置文件的形式去写。而我们不会轻易的去改Nginx的config
14-10 Docker之Nginx安装
还创建了一个日志目录,方便我们在宿主机上看到成功日志和失败日志。
14-10 Docker之Nginx安装

尽可能的不去容器里面操作一些东西,一来是不方便,二来是不安全。

mkdir -p /opt/install/nginx/conf

mkdir -p /opt/install/nginx/conf/vhost

mkdir -p /opt/install/nginx/conf/logs

我们去创建上面三个目录,并把他们引入到Nginx的镜像文件里。然后让它变成可以使用的目录就可以了。

一下子三行都复制过来
14-10 Docker之Nginx安装

 

14-10 Docker之Nginx安装
这个配置文件有两项比较重要的点
14-10 Docker之Nginx安装
这个路径是docker里面的路径,
14-10 Docker之Nginx安装


cd /opt/install/nginx/conf
14-10 Docker之Nginx安装

vi nginx.conf
14-10 Docker之Nginx安装
配置文件粘贴进来。
14-10 Docker之Nginx安装
这个配置文件是已经给大家调好的,所有的路径都是正常的路径的情况下。

vi nginx.conf
14-10 Docker之Nginx安装
保存并退出
14-10 Docker之Nginx安装
重新进入
14-10 Docker之Nginx安装
首先用的用户是root
14-10 Docker之Nginx安装

pid的路径,error的路径
14-10 Docker之Nginx安装
我们要把vhost映射到这个里面,映射到vhost这个文件里,然后我所有的自配置文件,都写在*.conf里面。
14-10 Docker之Nginx安装
我们稍微对这个文件做下修改
14-10 Docker之Nginx安装


14-10 Docker之Nginx安装
因为我们后面要显示子配置文件好不好用
14-10 Docker之Nginx安装

进入vhost目录内

14-10 Docker之Nginx安装
我们随便起名一个文件比如说叫做localhost.conf

vi localhost.conf
14-10 Docker之Nginx安装



14-10 Docker之Nginx安装
复制博客的配置文件的代码。
14-10 Docker之Nginx安装
复制过来
14-10 Docker之Nginx安装
这里改成localhost。这样我们访问的时候用localhost去访问,访问完成后,看看是不是www.jd.com 就可以了。
14-10 Docker之Nginx安装
保存并退出
14-10 Docker之Nginx安装

启动Nginx

docker run -itd --name jiangzh-nginx -p 80:80  \
-v /opt/install/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  \
-v /opt/install/nginx/logs:/var/log/nginx  \
-v /opt/install/nginx/conf/vhost:/etc/nginx/vhost nginx

 

 


14-10 Docker之Nginx安装
贴到了编辑器里面
14-10 Docker之Nginx安装
这是docker run -itd是docker后台运行的参数,
14-10 Docker之Nginx安装
这是给Nginx起个名字
14-10 Docker之Nginx安装
这是端口映射
14-10 Docker之Nginx安装

最主要的是我们想要执行这个Nginx后面没加冒号表示lasted
14-10 Docker之Nginx安装
选中这段是我们刚才创建的Nginx的conf,是宿主机上的路径,
14-10 Docker之Nginx安装
冒号之后代表的是我们docker的镜像,就是映射到哪。这里就是映射到我们docker镜像里面的etc/nginx/nginx.conf
14-10 Docker之Nginx安装
下面这行也是同理。前面是宿主机的路径冒号后面dokcer里面路径。
14-10 Docker之Nginx安装
最后参数这个路径是我们之前在Nginx的conf配置文件内配置的
14-10 Docker之Nginx安装
还有这个error.log 都在var/log/nginx/这个路径下
14-10 Docker之Nginx安装

第三个同样也是映射
14-10 Docker之Nginx安装
这是我们之前配置文件内配置的
14-10 Docker之Nginx安装
都复制过来启动一下
14-10 Docker之Nginx安装

docker run -itd --name jiangzh-nginx -p 80:80  \
-v /opt/install/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  \
-v /opt/install/nginx/logs:/var/log/nginx  \
-v /opt/install/nginx/conf/vhost:/etc/nginx/vhost nginx

 


看下我们的nginx是否启动成功。

docker ps -a | grep nginx
14-10 Docker之Nginx安装
下面就去访问nginx,直接访问本机的80,因为我们是在宿主机上的80映射了docker里面的80端口。

14-10 Docker之Nginx安装
这样说明我们的Nginx是可用的。后面我们挂了域名之后就能看到相应的东西
14-10 Docker之Nginx安装

docker exec -it jiangzh-nginx /bin/bash

14-10 Docker之Nginx安装


14-10 Docker之Nginx安装



14-10 Docker之Nginx安装


这里里面就有一个vhost的文件
14-10 Docker之Nginx安装
在往上一层
14-10 Docker之Nginx安装

这样就代表了我们的Nginx是启动成功的,同时也是读取的我们的配置文件。
退出,然后看下我们的log
14-10 Docker之Nginx安装
两个log在这里
14-10 Docker之Nginx安装
 

完整代码

 

user root;

worker_processes 1;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    include /etc/nginx/vhost/*.conf;
    
    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;
    
    keepalive_timeout 65;
    
    server {
        listen    80;
        server_name localhost;
        
        location / {
            root html;
            index index.html index.htm;
        }
        
        error_page 500 502 503 504  /50x.html;
        location = /50x.html {
            root html;
        }
    }
    
}

 

 

server {
    listen 80;
    server_name localhost;
    
    location / {
        proxy_pass http://www.jd.com;
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization';
            add_header 'Access-Contol-Max-Age' 172800;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
    }
    
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

 

 

docker run -itd --name jiangzh-nginx -p 80:80  \
-v /opt/install/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  \
-v /opt/install/nginx/logs:/var/log/nginx  \
-v /opt/install/nginx/conf/vhost:/etc/nginx/vhost nginx

 

 

 

 

结束


相关文章:

  • 2021-07-26
  • 2021-05-21
  • 2021-11-10
猜你喜欢
  • 2021-06-21
  • 2021-04-26
  • 2021-07-01
  • 2022-01-19
  • 2021-11-20
  • 2021-09-08
相关资源
相似解决方案