===============================================

2018/7/29_第1次修改                       ccb_warlock

===============================================

nginx作为市场占有率较高的http和反向代理服务,各种需要用到http和网页服务的项目经常需要用nginx做反代,故通过docker部署nginx也是最近的工作之一,故整理完部署后进行记录。


 一、前提条件


 二、部署nginx
 2.1 创建映射的本地目录

mkdir -p /usr/docker-vol/nginx/conf/conf.d
mkdir -p /usr/docker-vol/nginx/logs
mkdir -p /usr/docker-vol/nginx/ssl

 2.2 创建配置文件

# 创建nginx.conf

vi /usr/docker-vol/nginx/conf/nginx.conf

# 将nginx.cnf文件上传到/usr/docker-vol/nginx/conf目录下

user nginx;
worker_processes auto;
pid /run/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65; sendfile on;
tcp_nopush on;
gzip on;
# gzip_disable "msie6"; # 指定日志为json格式,键值对的格式
log_format access_log_json '{"user_ip":"$http_x_real_ip","lan_ip":"$remote_addr","log_time":"$time_iso8601","user_req":"$request","http_code":"$status","body_bytes_sents":"$body_bytes_sent","req_time":"$request_time","user_ua":"$http_user_agent"}'; # 限制上传文件的大小(M)
# types_hash_max_size 2048; # include的内容放在log_format之后日志格式的定义才生效
include /etc/nginx/conf.d/*.conf;

 2.3 配置反代
 # 编辑反代配置文件

vi /usr/docker-vol/nginx/conf/conf.d/www.conf

# 将下面的内容添加到www.conf文件内,wq保存

server {
listen 80;
server_name mydomain.com www.mydomain.com; autoindex on;
autoindex_localtime on;
access_log off;
error_log off; location ^~ /image/ {
client_max_body_size 10m;
proxy_pass http://192.168.12.1:5000/image/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} location / {
proxy_pass https://192.168.12.1:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root html;
index index.html index.htm;
}
}

 2.4 增加证书及密钥文件
将证书文件和密钥文件放到/usr/docker-vol/nginx/ssl目录下。

 2.5 配置nginx-stack.yml

cd
vim nginx-stack.yml

# 编辑nginx-stack.yml,wq保存

version: '3.6'
services: nginx:
image: nginx:1.14.0-alpine
environment:
- TZ=Asia/Shanghai
volumes:
# nginx的配置文件
- /usr/docker-vol/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /usr/docker-vol/nginx/conf/conf.d/:/etc/nginx/conf.d/
- /usr/docker-vol/nginx/ssl/:/etc/nginx/ssl/
- /usr/docker-vol/nginx/logs/:/var/log/nginx/
deploy:
replicas: 1
restart_policy:
condition: on-failure
update_config:
parallelism: 1
delay: 10s
monitor: 30s
max_failure_ratio: 0.1
order: start-first
ports:
- 80:80
- 443:443
networks:
- my-net networks:
my-net:
external: true

PS.获取请求真实IP的配置方案

docker service create --name nginx \
--mount type=bind,source=/usr/docker-vol/nginx/conf/nginx.conf,target=/etc/nginx/nginx.conf,readonly=false \
--mount type=bind,source=/usr/docker-vol/nginx/conf/conf.d/,target=/etc/nginx/conf.d/,readonly=false \
--mount type=bind,source=/usr/docker-vol/nginx/ssl,target=/etc/nginx/ssl,readonly=false \
--mount type=bind,source=/usr/docker-vol/nginx/logs/,target=/var/log/nginx/,readonly=false \
-p "mode=host,target=80,published=80" \
-p "mode=host,target=443,published=443" \
--replicas 1 \
--restart-condition any \
--network gm-net \
--update-parallelism 1 \
--update-delay 3s \
--update-monitor 10s \
--update-max-failure-ratio 0.1 \
--update-order stop-first \
--limit-cpu 0.5 \
--limit-memory 300M \
nginx:1.14.0-alpine

参考资料:

1. https://www.cnblogs.com/wwzyy/p/8337965.html

2. http://www.runoob.com/docker/docker-install-nginx.html

3. http://www.ttlsa.com/nginx/use-nginx-proxy/

4. https://blog.csdn.net/bolg_hero/article/details/42105987

docker stack 部署nginx的更多相关文章

  1. 在Docker下部署Nginx

    在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...

  2. Docker Compose部署 nginx代理Tomcat集群

    一.简介 使用Docker镜像部署Nginx代理的多个Tomcat集群: 使用Dockerfile构建nginx镜像 使用Dockerfile构建tomcat镜像 mysql镜像使用docker hu ...

  3. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  4. 阿里云服务器安装Docker并部署nginx、jdk、redis、mysql

    阿里云服务器安装Docker并部署nginx.jdk.redis.mysql 一.安装Docker 1.安装Docker的依赖库 yum install -y yum-utils device-map ...

  5. Linux运维之docker虚拟化部署nginx

    一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

  6. docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)

    =============================================== 2018/7/8_第1次修改                       ccb_warlock === ...

  7. docker stack 部署 mysql 5.6

    =============================================== 2018/7/1_第1次修改                       ccb_warlock === ...

  8. docker stack 部署 filebeat

    =============================================== 2018/7/21_第3次修改                       ccb_warlock 更新 ...

  9. docker stack 部署 redis

    =============================================== 2019/4/16_第2次修改                       ccb_warlock 更新 ...

随机推荐

  1. DHCP中续代理

    什么是DHCP中继代理? 答:DCHP中继代理(即DHCP Relay  Agent )用于转发来自于另一个没有DHCP服务器子网段中的客户端的DHCP请求,即当一台DCHP客户机发起请求后,此时DH ...

  2. 什么是Asp.net Core?和 .net core有什么区别?

    为什么要写这篇文章 写这篇文章有两个原因,第一个是因为新站点创建出来后一直空置着,所以写一篇文章放在这里.第二就是因为近来在做一些基于Asp.net core平台的项目开发,也遇到了一些问题,正好趁此 ...

  3. Git从零开始(一)

    一.首先windows安装git客户端 官网下载地址:https://git-for-windows.github.io/,这里下载会很慢,我试了好几次都失败了. 百度网盘资源: https://pa ...

  4. 00405EB0 mov eax,dword ptr [ecx] 是什么意思?

    dword 双字 就是四个字节ptr pointer缩写 即指针[]里的数据是一个地址值,这个地址指向一个双字型数据比如mov eax, dword ptr [12345678] 把内存地址12345 ...

  5. Guava的SetMultimap

    在工作中,我们会经常用到如下类似的结构 Map<String, Set<Stirng>> map = new HashMap<Stirng, Set<String& ...

  6. Entity Framework(EF) Code First将实体中的string属性映射成text类型的几种方式

    1.通过ColumnType属性设置 [Column(TypeName="text")] public string Text { get; set; } 在进行以上属性设置时,请 ...

  7. djang-rest-framework学习-day1

    1.老套路:setting 设置复制粘贴!,必要库的安装: 一些库安装失败的解决办法:在 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 上找到下载,然后使用用 ...

  8. 02 使用Mybatis的逆向工程自动生成代码

    1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...

  9. P4932 浏览器

    题目背景 __stdcall在用Edge玩slay的时候,鼠标会经常失灵,这让她十分痛苦,因此她决定也要让你们感受一下Edge制造的痛苦. 题目描述 __stdcall给了你n个点,第i个点有权值x[ ...

  10. Java 8新特性之Stream(八恶人-3)

    “You John Ruth The Hangman” 绞刑者鲁斯·约翰 “When the Hangman catches you, you hang.”当被绞刑者抓住了,你肯定会被绞死 一.基本介 ...