docker 部署nginx多级子域名(三级四级...)映射不同web项目,访问不同路径地址

一、背景

只有一台服务器,一个顶级域名,现在需要根据不同子域名访问不同web项目,比如

# 管理后台
cms.biacu.com

# 客户端h5
h5.biacu.com

# 四级域名
h5.s.biacu.com
  

同时,不同web项目放在不同位置

二、

1、在云服务器上,添加解析,如下图

2、nginx.conf的配置如下


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /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 来提高页面加载速度
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    #gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    
    
    # include /data/nginx/conf/conf.d/*.conf;
    # 做了映射 - /data/nginx/conf:/etc/nginx
    include /etc/nginx/conf.d/*.conf;
    
    server {
        listen 80;
        #填写绑定证书的域名
        server_name www.baicu.com; 
        #把http的域名请求转成https
        #return 301 https://$host$request_uri; 
        location / {
            # 默认
            # root html;
            # docker 做了映射 - /data/nginx/html:/usr/share/nginx/html
            root /usr/share/nginx/html; 
            index  index.html index.htm;
        }
    }
    
    server {
        listen  8001;
        server_name  localhost;
        location / {
            # 页面存放地址
            root  /home/ruoyi/20240612/cms;
            index  index.html;
            try_files $uri $uri/ /index.html;
        }
        
        # 转发请求到后端 chat
        location /prod-api/ {
        	proxy_set_header Host $http_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;
       	  proxy_pass http://你的公网IP:8080/;
          proxy_cookie_path /prod-api/ /;
          proxy_buffer_size 1024k;
          proxy_buffers 16 1024k;
          proxy_busy_buffers_size 2048k;
          proxy_temp_file_write_size 2048k;
        }
    }
    
    server {
        listen  80;
        server_name  20240612.cms.baicu.com;

        location / {
            proxy_pass http://你的公网IP:8001;
            proxy_set_header Host $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 {
        #SSL 访问端口号为 443
        listen 443 ssl; 
        #填写绑定证书的域名
        server_name www.baicu.com; 
        #证书文件名称
        ssl_certificate baicu.com.crt; 
        #私钥文件名称
        ssl_certificate_key baicu.com.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES228-GCM-SHA246:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        location / {
           # docker 做了映射 - /data/nginx/html:/usr/share/nginx/html
           root /usr/share/nginx/html;  
           index  index.html index.htm;
        }
    }
    
    
    server {
        #SSL 访问端口号为 443
        listen 443 ssl; 
        #填写绑定证书的域名
        server_name 20240612.cms.baicu.com;
        #证书文件名称
        ssl_certificate baicu.com.crt; 
        #私钥文件名称
        ssl_certificate_key baicu.com.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES208-GCM-SHA156:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on; 
        location / {
            proxy_pass http://你的公网IP:8001;
            proxy_set_header Host $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;
        }
        
        # 转发请求到后端
        location /prod-api/ {
        	proxy_set_header Host $http_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;
       	    proxy_pass http://你的公网IP:8080/;
          proxy_cookie_path /prod-api/ /;
          proxy_buffer_size 1024k;
          proxy_buffers 16 1024k;
          proxy_busy_buffers_size 2048k;
          proxy_temp_file_write_size 2048k;
        }
    }
    
}

3、include引入conf.d的其他conf的配置

server {
    listen  8002;
    server_name  localhost;
    location / {
        # 页面存放地址
        root  /home/ruoyi/20240612/h5;
        index  index.html;
        try_files $uri $uri/ /index.html;
    }
    
    # 转发请求到后端
    location /prod-api/ {
        proxy_set_header Host $http_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;
        proxy_pass http://你的公网IP:8080/;
        proxy_cookie_path /prod-api/ /;
        proxy_buffer_size 1024k;
        proxy_buffers 16 1024k;
        proxy_busy_buffers_size 2048k;
        proxy_temp_file_write_size 2048k;
    }
}
server {
    listen  80;
    server_name  20240612.h5.baicu.com;

    location / {
        proxy_pass http://你的公网IP:8002;
        proxy_set_header Host $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 {
    #SSL 访问端口号为 443
    listen 443 ssl; 
    #填写绑定证书的域名
    server_name  20240612.h5.baicu.com;
    #证书文件名称
    ssl_certificate baicu.com.crt; 
    #私钥文件名称
    ssl_certificate_key baicu.com.key; 
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3; 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES208-GCM-SHA226:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on; 
    location / {
        proxy_pass http://你的公网IP:8002;
        proxy_set_header Host $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;
    }
    
    # 转发请求到后端
    location /prod-api/ {
        proxy_set_header Host $http_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;
        proxy_pass http://你的公网IP:8080/;
        proxy_cookie_path /prod-api/ /;
        proxy_buffer_size 1024k;
        proxy_buffers 16 1024k;
        proxy_busy_buffers_size 2048k;
        proxy_temp_file_write_size 2048k;
    }
}

4、dockerFile的文件配置如下

version: '3.1'

services:
  nginx:
    image: nginx
    restart: always
    container_name: nginx
    hostname: nginx
    ports:
      - 80:80
      - 443:443
      - 8001:8001
      - 8002:8002
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /data/nginx/conf:/etc/nginx
      - /data/nginx/logs:/var/log/nginx
      - /data/nginx/html:/usr/share/nginx/html
      - /home/ruoyi/console:/home/ruoyi/console/
      - /home/ruoyi/20240612/h5:/home/ruoyi/20240612/h5/
      - /home/ruoyi/20240612/cms:/home/ruoyi/20240612/cms/

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用Docker部署Nginx访问Vue项目时,可以按照以下步骤进行操作: 1. 首先,确保已经安装了DockerDocker Compose。这两个工具可以帮助我们管理和运行容器。 2. 创建一个新的文件夹,用于存放相关的配置文件和代码。 3. 在该文件夹下创建一个名为`Dockerfile`的文件,并添加以下内容: ``` # 使用官方的Nginx镜像作为基础镜像 FROM nginx # 删除默认的Nginx配置文件 RUN rm /etc/nginx/conf.d/default.conf # 将自定义的Nginx配置文件复制到容器中 COPY nginx.conf /etc/nginx/conf.d # 将Vue项目的静态文件复制到Nginx的默认网站目录 COPY dist /usr/share/nginx/html # 暴露80端口,允许外部访问 EXPOSE 80 ``` 4. 在同一文件夹下创建一个名为`nginx.conf`的文件,并添加以下内容: ``` server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; } } ``` 这个配置文件将Nginx监听80端口,并将所有请求转发到Vue项目的静态文件。 5. 将Vue项目的打包文件(通常在`dist`目录下)复制到同一文件夹下。 6. 打开终端,进入到该文件夹,并执行以下命令来构建和运行Docker容器: ``` docker build -t my-nginx . docker run -d -p 80:80 my-nginx ``` 第一条命令将根据`Dockerfile`构建一个名为`my-nginx`的镜像。第二条命令将在后台运行该镜像,并将容器的80端口映射到主机的80端口。 现在,您可以通过访问`http://localhost`来查看部署的Vue项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值