把局域网的IP地址修改为使用域名访问

Evan
Evan
发布于 2025-05-12 / 11 阅读
0

Gitea已经安装好了,地址是http://192.168.0.103:3000/,现在需要做的是将这个地址使用域名的方式访问

需要下面几个步骤

  1. 下载SwitchHost,将giteadev.llblog.cn映射到192.168.0.103这个地址

  2. 使用docker运行nginx容器,将giteadev.llblog.cn这个域名的请求反向代理到192.168.0.103:3000这个上面

1、下载安装SwitchHost,目前最新版本是4.2.0,win11就下载SwitchHosts_windows_installer_x64_4.2.0.6119.exe

2、使用Docker安装Nginx,并进行配置,这里贴一下完整的docker-compose.yaml,因为需要使用nginx做反向代理,所以必须给gitea服务指定IP

networks:
  gitea-network:
    external: false
    ipam:
      config:
        - subnet: 192.168.2.0/24
#这里使用的是命名卷
volumes:
  gitea:
    driver: local

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro          # 主配置文件
      - ./nginx/conf.d:/etc/nginx/conf.d                  # 动态配置目录
      - ./nginx/html:/usr/share/nginx/html                # 网站根目录
      - ./nginx/logs:/var/log/nginx                       # 日志目录
    networks: 
        gitea-network: 
            ipv4_address: 192.168.2.4
    restart: on-failure:3
    depends_on:
      - gitea
  gitea:
    image: docker.gitea.com/gitea:1.23.7
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=mysql
      - GITEA__database__HOST=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      gitea-network:
        ipv4_address: 192.168.2.3
    volumes:
      - gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: docker.io/library/mysql:8
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=gitea
      - MYSQL_DATABASE=gitea
    networks:
      gitea-network:
            ipv4_address: 192.168.2.2
    volumes:
      - ./mysql:/var/lib/mysql

其中也遇到了一个小麻烦,第一次使用docker-compose up -d 命令启动的时候,因为指定的卷生成了一个nginx.conf文件夹,所以启动失败了,然后使用DeepSeek找了一个解决办法,就是先把配置文件拷贝出来,然后再启动就成功了。

docker run --name tmp-nginx -d nginx
docker cp tmp-nginx:/etc/nginx/nginx.conf ./nginx/nginx.conf
docker stop tmp-nginx && docker rm tmp-nginx

3、下面贴一下nginx的配置

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /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  on;

    server {
    listen 80;
    server_name giteadev.llblog.cn;
    location / {
        proxy_pass http://192.168.2.3:3000;
    }
}
    include /etc/nginx/conf.d/*.conf;
}

4、完成,在浏览器请求地址giteadev.llblog.cn就成功了