Docker 因端口映射不一致出现的问题

问题描述

因为服务器原先已经安装了nginx(非容器安装),并且占用80端口;

而我方习惯使用容器进行安装应用,故用安装了一个容器ngixn;

docker-compose.yml

version: '3'
services:
  nginx:
    restart: always
    container_name: nginx
    image: nginx
    ports:
      - 81:80
      - 443:443
    volumes:
      - /data/nginx/html:/usr/share/nginx/html
      - /data/nginx/logs:/var/log/nginx
      - /data/nginx/nginx.conf/:/etc/nginx/nginx.conf
      - /data/nginx/etc/cert:/etc/nginx/cert
      - /data/nginx/conf.d:/etc/nginx/conf.d
    environment:
      - TZ=Asia/Shanghai
    privileged: true

default.conf

server{
       listen 80;
       server_name localhost;
       charset utf-8;

       location /test {
          root   /usr/share/nginx/html;
          index  index.html index.htm;
       }



       location / {
          root   /usr/share/nginx/html;
          index  ./bdcloud/index.html ./bdcloud/index.htm;
       }

       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }
    }

 

此时我的前端服务应该都从81进入,然后交由nginx的80端口进行处理;

但此时发现在前端的登录页面总是会自动跳转到80端口,导致无法通过81端口进入nginx容器

 

问题定位

因为nginx容器内部是通过80端口进行监听的,导致在跳转前端首页时直接携带了此时的80端口,而nginx容器本身是通过81端口进行监听的,从而发生了冲突;

 

解决方案

尽量docker容器的映射端口保持一致

docker-compose.yml

 default.conf

 

posted @ 2024-07-11 11:08  先娶国王后取经  阅读(18)  评论(2编辑  收藏  举报