使用OpenResty容器代理到宿主机(本机)的端口

10 min read
  1. 启动OpenResty容器时,确保它能够访问宿主网络。如果你不需要容器之间的隔离,可以使用--network="host"参数,但这会使容器共享宿主的网络命名空间,从而容易访问本机端口。

    docker run -d --name my_openresty --network="host" openresty/openresty:1.21.4.3-0-focal
    

    注意:使用--network="host"模式时,容器将直接使用宿主机的网络,因此不需要映射端口。

  2. 修改OpenResty(Nginx)配置,设置一个代理服务器指向宿主机的端口。这通常涉及到编辑OpenResty容器中的nginx.conf文件,或者是特定的虚拟主机配置文件。

    你可以通过进入容器内部来编辑配置文件:

    docker exec -it my_openresty /bin/bash
    

    然后编辑/usr/local/openresty/nginx/conf/nginx.conf或者相关配置文件,添加如下配置:

    server {
        listen 80;
        location / {
            proxy_pass http://host.docker.internal:8080;
            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;
        }
    }
    
  3. 重启OpenResty容器以应用配置更改:

    docker restart my_openresty