原创

博客搭建日志-docker搭建nginx做文件服务器和反向代理

构建容器


不说废话,直接动手。首先需要你拉取镜像

使用如下脚本即可在本地构建容器了

docker run \
--name nginx-docker \
-d --restart always \ #docker启动时自动重启
-p 7070:7070 \ #映射端口我这里用到了文件服务器
-p 80:80 \ #默认的http端口映射
-v $PWD/config/nginx.conf:/etc/nginx/nginx.conf \ #指定宿主机到容器的配置文件映射
-v $PWD/data/nginx_data:/home/files \ #配置数据目录
-v $PWD/ssl:/home/ssl \
nginx #启动

此时你的容器已经构建好了,不过还还不能满足我们的需求,需要再修改一下nginx的配置。

修改nginx配置


我这里nginx用到了两个功能,一个是我的博客的二级域名的代理,还有就是博客中使用到的文件服务器。

先把配置拿出来,然后再慢慢说。

    .
    前边的配置暂时忽略,有需要的可以使用文尾的地址下载
    .
    # 前台服务
    server {
        listen       80; #默认就可以
        server_name  blog.sev7e0.site; #这里修改为你的二级域名
        location / {
            proxy_pass http://宿主机ip:前台应用端口/; #这里修改时需要注意,由于我们使用的是docker所以ip一定要是宿主机ip。不然会产生502这种奇怪的错误
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    # 后台服务
    server {
        listen       80;
        server_name  admin.sev7e0.site;
        location / {
            proxy_pass http://宿主机ip:后台应用端口/; #注意是后台应用端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    # 文件服务
    server {
        listen       80;
        server_name  files.sev7e0.site;
        location / {
            proxy_pass http://宿主机ip:该端口要与你的构建脚本中容器映射到宿主机的端口,/files/; 
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    # 启动一个文件服务器
    server {
        #监听7070端口
        listen       7070;
        server_name  localhost;
        location ~/files {
            root /home; # 这样就会在你的/home下生成/files/文件夹,也是我们挂载宿主机目录的路径
            #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
            #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
            #expires 30d;
        }

    }
}

文件配置好,保存到我们指定的宿主机目录下~/docker/nginx/config/nginx.conf(该路径要与你的构建脚本中的左边的路径一致),此刻若你的配置其他两个前后台服务完好,那么就只需一步就可以访问你的博客了。

重载nginx配置

docker exec -it nginx-docker /etc/init.d/nginx reload

这就是nginx的配置重载命令。

至此docker搭建ningx作为反向代理就已经完成了。

配置文件


提供一个我的完整的配置文件地址


哦对了,这期间遇到了一些坑参考了一些好的很好的博客!

nginx快速入门之配置
nginx配置二级域名
记一次用 Docker 运行 Nginx 容器做域名反向代理时踩的坑

sev7e0
Write by sev7e0
end
本文目录