nginx docker部署配置

扩展:
nginx配置详解
epoll(1)
epoll(2)
epoll(3)

使用 Dcker 部署 nginx

1、安装nginx并启动容器

1.1、搜索拉取镜像

docker search nginx #搜索镜像
docker pull nginx #拉取镜像

1.2、容器设置端口映射和目录映射

1、在本机创建 nginx 目录用于存储 nginx 数据信息(以在 /root 创建为例)
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
#创建 nginx.conf 文件
vim nginx.conf

在 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 {
includel 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 ;
include /etc/nginx/conf.d/*.conf;
}

在 ~/nginx/conf.d/ 下创建 80.conf 文件用于端口映射配置

  • 这其实是一个虚拟主机,访问 localhost:80就直接指向了 /usr/share/nginx/html 这个目录,同时默认页面是本目录下的index.html
server {
listen 80; # 监听的端⼝
server_name localhost; # 域名或ip
location / { # 访问路径配置
root /usr/share/nginx/html;# 根⽬录
index index.html index.htm; # 默认⾸⻚
}
error_page 500 502 503 504 /50x.html; # 错误⻚⾯
location = /50x.html {
root html;
}
}

1.3、创建启动容器( \ 用于换行,也可以不换)

docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
参数解释:
-p 80:80:将容器的 80端⼝映射到宿主机的 80 端⼝。
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前⽬录下的
/conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置⽬录
-v $PWD/logs:/var/log/nginx:将主机当前⽬录下的 logs ⽬录挂载到容器
的/var/log/nginx。⽇志⽬录

此时就可以通过 ip:80 访问到 nginx 了

2、nginx静态网站部署

  • 就是利用上面说的虚拟主机配置多个网站。

  • 同时在 ~/nginx/conf.d/ 下创建 port.conf 来做虚拟主机的配置

  • 这里面的 root 目录是容器里面的 nginx 的目录。要提前在这里面加上要访问的页面和目录(这里就要提前加上index/index.html 和 regist/regist.html)

  • 我们前面在 nginx.conf 里面配置过 include /etc/nginx/conf.d/*.conf; 启动时配置了参数:-v PWD/conf/nginx.conf:/etc/nginx/nginx.conf nginxPWD/conf/nginx.conf 下的配置文件( *.conf 文件)

    server {
    listen 81; # 监听的端⼝
    server_name localhost; # 域名或ip
    location / { # 访问路径配置
    root /usr/share/nginx/index;# 根⽬录
    index index.html index.htm; # 默认⾸⻚
    }
    error_page 500 502 503 504 /50x.html; # 错误⻚⾯
    location = /50x.html {
    root html;
    }
    }
    server {
    listen 82; # 监听的端⼝
    server_name localhost; # 域名或ip
    location / { # 访问路径配置
    root /usr/share/nginx/regist;# 根⽬录
    index regist.html; # 默认⾸⻚
    }
    error_page 500 502 503 504 /50x.html; # 错误⻚⾯
    location = /50x.html {
    root html;
    }
    }

    配置完成之后就可以直接访问 ip:port 访问之前配置的也页面了

  • 以上是通过 ip 访问的,可以在本机的 host 文件配置域名和 ip 的映射,同时在conf 目录下加上 domain.conf 配置文件做域名绑定。

    domain.conf

    当然前提是修改了本机的 host 文件添加了 www.xzk.com 的域名映射。
    server {
    listen 80;
    server_name www.xzk.com;
    location / {
    root /usr/share/nginx/cart;
    index cart.html;
    }
    }
    server {
    listen 80;
    server_name regist.xzk.com;
    location / {
    root /usr/share/nginx/search;
    index search.html;
    }
    }

3、反向代理

  • 正向代理是接受客户端的请求并将请求转发到 InterNet 的过程(运营商干的就是这个),反向代理就是以代理服务器来接收 Internet 的消息转发给服务器,并将结果返回给Internet 上的请求客户端
  • 正向代理针对的是客户端,反向代理针对的是服务器端

3.1、配置反向代理

  • 拉取tomcat 容器

    docker search tomcat
    docker pull tomcat
  • 创建 tomcat 容器并设置端口和目录映射

    1、同样在根目录下创建 tomcat 目录用于存储 tomcat 的数据信息
    mkdir ~/tomcat
    cd ~/tomcat
    2、运行容器
    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat

    配置完成就可以访问到 tomcat 了

  • 配置反向代理

    这时仍要在 ~/nginx/config.d/ 创建 proxy.conf 文件用来配置反向代理
    upstream tomcat-kkb{
    server 192.168.220.12:8080;
    }
    server {
    listen 80; # 监听的端⼝
    server_name www.kkb.com; # 域名或ip
    location / { # 访问路径配置
    # root index;# 根⽬录
    proxy_pass http://tomcat-kkb;
    index index.html index.htm; # 默认⾸⻚
    }
    }

    重新启动 nginx 访问 www.kkb.com (要在 host 文件里面配置映射)即可

3.2 配置负载均衡

  • 创建3个 tomcat 容器来做负载均衡

    docker run -id --name=c_tomcat1 \
    -p 8081:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat
    docker run -id --name=c_tomcat1 \
    -p 8082:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat
  • 在 ~/nginx/config.d/ 目录下创建 ld.conf 来配置负载均衡

    upstream tomcat-huike {
    server 192.168.129.3:8080;
    server 192.168.129.3:8081;
    server 192.168.129.3:8082;
    }
    server {
    listen 80; # 监听的端⼝
    server_name www.huike.com; # 域名或ip
    location / { # 访问路径配置
    # root index;# 根⽬录
    proxy_pass http://tomcat-huike;
    index index.html index.htm; # 默认⾸⻚
    }
    error_page 500 502 503 504 /50x.html; # 错误⻚⾯
    location = /50x.html {
    root html;
    }
    }

    改变权重可以让访问端口的几率改变:两次 8081 其他各一次

    server 192.168.129.3:8080;
    server 192.168.129.3:8081 weight=2;
    server 192.168.129.3:8082;
posted @   心是冰冰的  阅读(479)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示