菜单

kaoqi
kaoqi
发布于 2026-10-15 / 8 阅读
0
0

nginx部署与docker-socket调试

对于实际的docker来说,其容器本身在ps aux就直接是一个本地运行的进程,只不过这个进程被dockerd进程通过针对命名空间的限制,完成了一次本地资源环境的适配。

所以,针对原有的docker服务改造与nginx的部署需要以下几步:

  • 首先是本地把nginx的环境搭建好(服务器有时候已经提供了1panel服务)

  • 配置好nginx的路由服务

  • 通过重启服务时关闭-p命令(docker run时不要进行-p绑定)

  • nginx启用systemctl,并完成nginx到docker的建链

使用本地socket查看命令可以首先帮你理清当前本级的IP有哪些,他们的socket连接关系是什么样子的:

ss -tulnp

对于容器内部的socket使用情况,由于镜像里面一般把支撑的工具都删了,其实不怎么好看见。

具体来说,服务器首先会由systemd启动dockerd这个开机自启的后台监控软件。当你在服务器中执行了docker run命令,且指定--restart参数为always时,这个容器就总是会随着开机而自启。此时,如果在输入参数中还指定了-p来描述容器IP到公网端口的映射关系,那么在每次开机重启的时候,也会一并重新执行。在执行带参数的docker run命令后,这个容器的相关参数集合可以使用docker inspect [docker-id]的方式来具体确认。有关docker的port映射关系,则可以通过docker port [docker-id]来确认,docker-id参数本身可以用docker ps命令来确认。

当docker启动容器时,如果容器的inspect参数中描述了port关系,那么在启动时会创建docker-proxy专门用于公网IP到容器内的映射。

而对于公网IP的监听,则是以1panel的方式进行的,这可以从ss命令中以openresty命令完成0.0.0.0:80的监听看出来。

最终,可以在腾讯云的管理界面看到如下配置:

这其实说明了这个1panel是以/opt/1panel/apps/openresty/conf/nginx.conf文件的配置,来实现最终的公网到halo的映射关系的。

nignx配置文件

根据前文的描述,主配置文件位于/opt/1panel/apps/openresty/conf/nginx.conf,同时你还可以通过systemctl status查看当前1panel的情况:

server {
    listen 80 default_server; 
    listen 443 ssl default_server; 
    server_name halo.localhost; 
    index index.php index.html index.htm default.php default.htm default.html; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Host $server_name; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    access_log /www/sites/halo.localhost/log/access.log; 
    error_log /www/sites/halo.localhost/log/error.log; 
    location ^~ /.well-known/acme-challenge {
        allow all; 
        root /usr/share/nginx/html; 
    }
    location /wangpan/ {
        proxy_pass http://127.0.0.1:5000; 
    }
    location / {
        proxy_pass http://127.0.0.1:8080; 
    }
    include /www/sites/halo.localhost/ssl/*.conf; 
    http2 on; 
}

启用本地server服务

由于目前nginx的alias功能费拉不堪,因此,静态网页加载的技术最好直接依托python展开,在静态网页位置加载

前往静态网页路径下执行:

python3 -m http.server 8110 --bind 0.0.0.0 --directory /home/ubuntu/fenghuo

完成部署:


评论