本文最后更新于 2025-03-22,文章内容可能已经过时。

指定域名跳转到ip+端口号对应的资源

域名解析本身只能将域名映射到 IP 地址,而不能直接指定端口号。也就是说,当你在 DNS 中设置 A 记录或 CNAME 记录时,只能指向某个 IP 地址,而无法直接将请求转发到非标准端口(如80或443以外的端口)。因此,为了让访问域名的用户能够访问到实际在特定 IP 和端口上运行的资源,通常有以下几种解决方案:

  1. 反向代理

设置一个反向代理服务器(例如 Nginx、Apache 或 Traefik),使其监听标准端口(如 80 或 443),然后根据请求转发到后端运行在指定端口的服务。例如,使用 Nginx 你可以配置如下:

  1. 使用默认80端口号

http默认端口号为80端口,访问iP时会自带80端口号

以下则演示使用nginx服务器做反向代理来解决该问题

若已经部署了nginx,则可以在 conf.d文件夹或nginx.conf文件中加入

1. 部署nginx容器

docker run -d \
  --name nginx \
  -p 80:80 \
  -p 9090:9090 \
  -v /mydata/nginx/html:/usr/share/nginx/html \
  -v /mydata/nginx/logs:/var/log/nginx \
  -v /mydata/nginx/conf/nginx:/etc/nginx \
  nginx

2. 复制conf文件夹到主机目录

docker cp nginx:/etc/nginx /mydata/nginx/conf
# 将前端项目复制到html文件夹下,方便修改(使用自己的项目路径)
cp -r /root/project/tcm-ui/ /mydata/nginx/html

原因:以防nginx.conf等格式是文件夹导致挂载失败

3.进入conf.d文件夹,并创建xxx.conf文件

cd /mydata/nginx/conf/nginx/conf.d
vim halo.conf

4.粘贴以下内容

server {
    listen 80;
    server_name hgsgh2.com; # 自己的域名
    location / {
        proxy_pass http://xxx.53.xx.68:8090;    # 重定向的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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

5. 重启nginx

docker restart nginx

6.访问域名:搞定