V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  programV2  ›  全部回复第 62 页 / 共 77 页
回复总数  1525
1 ... 58  59  60  61  62  63  64  65  66  67 ... 77  
@dndx ![捕获 c.PNG]( https://i.loli.net/2020/02/25/R5qsvKijd69Zlah.png) 这是截图 谢谢
@dndx 使用的 CLOUDFLARE CDN, 并且服务器也是用 cloudflare Origin CA 15 年免费证书,
之前已经上传启用证书成功, web 端也显示颁发给 我的域名, 但是前几天重启了下服务器之后就变成只显示 sni
cloudflaressl com 的证书 , 并且 客户端看到的免费证书也没有我的域名
使用的 CLOUDFLARE CDN, 并且服务器也是用 cloudflare Origin CA 15 年免费证书,
之前已经上传启用证书成功, web 端也显示颁发给 www.xxx.com, 但是前几天重启了服务器之后就变成只显示 sni.cloudflaressl.com 的证书 , 有 V 友碰到这种情况的吗, 谢谢
@sleepm V 友您好有两个疑惑想向您请教:
我 docker-compose.yml 设置 nginx 容器
ports:
- 80:80
-443:443

发现主机上监听的只有 IPV6 的端口,
root@abc:~# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:42303 0.0.0.0:* LISTEN 2835/containerd

tcp6 0 0 :::443 :::* LISTEN 2483/docker-proxy

tcp6 0 0 :::80 :::* LISTEN 2471/docker-proxy

疑惑:
1. 我进 nginx 容器内执行 netstat -tnlp, 发现 ipv4 的 80 和 443 都在监听,
但是我在 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢?? 是因为上面的 docker-compose.yml 中已经开启所以没法在 nginx.conf 配置中关闭 80 端口吗?

2.我用 v4 地址还可以访问主机网站, 据V友讲是内核默认会把 v4 过来的地址转换成特殊的 v6 地址, 但是我 nginx 容器内只监听 v4 的地址,那是不是说系统还得把这个特殊的 v6 地址再次转换成 v4 地址才能与容器内的 nginx 服务通信?
@sleepm 谢谢🙏, 我上面手抖写錯了,drupal 容器=php 容器(镜像是 drupal + php); 好的,我只要改 php 容器内的 www-data 用户 uid
@dndx 抱歉,请问你说的" listen [::]:443 "是监听 V6 的 443 端口吗?" listen 443 本来就是两个都监听的"意思是 v4 和 v6 的 443 都监听 ?

但我的问题是 nginx.conf 配置文件中只设置了 listen 443;为什么还会监听 80 的端口呢???
@merryfreespace @gefranks
@sleepm
@sleepm 非常感谢几位热心 V 友🙏🙏

我 docker-compose.yml 部分设置如下
version: "3"
services:
nginx:
image: nginx:$NGINX_TAG
container_name: "${PROJECT_NAME}_nginx"
ports:
- $NGINX_PORTA
volumes:
- "./drupal/web:/var/www/html"
- "./drupal/logs/nginx:/var/log/nginx"
- "./drupal/nginx/nginx.conf:/etc/nginx/conf.d/default.conf"
- "./drupal/ssl:/etc/ssl"
depends_on:
- php

drupal:
image: drupal:$DRUPAL_TAG
container_name: "${PROJECT_NAME}_drupal"
volumes:
- "./drupal/web:/var/www/html"
- "./drupal/mysql:/var/lib/mysql"
restart: always
depends_on:
- mysql


之前安装网站时赶时间运行了 chmod -R 777, 现在想把主机上挂载的网站源码文件夹./drupal/web 的 owner 改为 www-data 用户, 我进 nginx 容器发现没有 www-data 这个用户名,请问 nginx 服务访问 /drupal/web 用的是哪个用户名?



P.S. 我 主机建了 3 个 docker 容器:Nginx,Drupal, MySQL, 其中 Nginx 和 Drupal 容器都是挂载到 ./drupal/web , 这样我是不是需要同时改这两个容器的 uid gid? 我现在在主机新建普通用户 foo: useradd -m -s -u 2005 -g 2005 foo , 还要分别进这两个容器执行下列命令吗? 但 nginx 容器发现没有 www-data 这个用户名

usermod -u 2005 www-data
groupmod -g 2005 www-data
find / -user 82 -exec chown -h www-data {} \;
find / -group 82 -exec chgrp -h www-data {} \;
@programV2 抱歉,是不是我的表达有问题? 你就的`listen [::]:443`不是监听 V6 的 443 端口吗? 但我的问题是 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢???
@dndx 检查过了, 并且 docker 所有容器已经重启过了, 还有我进 nginx 容器内执行 netstat -tnlp, 发现 v4 的 80 和 443 都在监听, 但是我 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢??
nginx.conf`
server {
listen 443;
ssl on;
ssl_certificate /dir
@dndx 谢谢!但是我进 nginx 容器内执行 netstat -tnlp, 只有 tcp 的记录,没看到 tcp6 的记录, 这是为什么?

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.11:42303 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1/nginx: master pro
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
@dndx 谢谢 V 友, 有两个疑问:1.刚进 nginx 容器内执行 netstat -tnlp, 发现 v4 的 80 和 443 都在监听, 我 nginx.conf 配置文件中只设置 listen 443;为什么还会监听 80 的端口呢??

2.内核默认会把 v4 过来的地址转换成特殊的 v6 地址, 但是我 nginx 容器内只监听 v4 的地址,那是不是说系统还得把这个特殊的 v6 地址再次转换成 v4 地址才能与容器内的 nginx 服务通信?
@dndx
@cwbsw 谢谢两位指点. 就是说如果没有设置 BindIPv6Only 这个 tag 默认就是同时监听 ipv6 和 ipv4 端口吗? 另外还有一个疑问就是我用的容器,镜像中虽然映射了 80:80 和 443:443 端口, 但是我 nginx.conf 配置文件中只设置 listen 443; 为什么 80 端口还能访问( http 和 tcping 都 ok)??

docker-compose.yml 设置如下,
version: "3"
services:
nginx:
image: nginx:$NGINX_TAG
container_name: "${PROJECT_NAME}_nginx"
ports:
- 80:80
-443:443
2020-02-13 15:22:46 +08:00
回复了 programV2 创建的主题 程序员 docker 容器挂载 volume 的目录权限问题
@cdlnls 谢谢大佬回复 !端口和密码我都加固了, 之前安装网站时赶时间运行了 chmod -R 777, 现在是想把网站源码文件夹的 owner 改为 www-data 用户, 我刚进 nginx 容器发现没有 www-data 这个用户名,请问 nginx 服务访问 /project/web 用的是哪个用户名?



1.主机建了 3 个 docker 容器:Nginx,Drupal, MySQL, 其中 Nginx 和 Drupal 容器都是挂载到 ./project/web , 这样我是不是需要同时改这两个容器的 uid gid? 我现在在主机新建普通用户 foo: useradd -m -s -u 2005 -g 2005 foo , 还要分别进这两个容器执行下列命令吗?

usermod -u 2005 www-data
groupmod -g 2005 www-data
find / -user 82 -exec chown -h www-data {} \;
find / -group 82 -exec chgrp -h www-data {} \;




我 docker-compose.yml 部分设置如下
version: "3"
services:
nginx:
image: nginx:$NGINX_TAG
container_name: "${PROJECT_NAME}_nginx"
ports:
- $NGINX_PORTA

volumes:
- "./drupal/web:/var/www/html"
- "./drupal/logs/nginx:/var/log/nginx"
- "./drupal/nginx/nginx.conf:/etc/nginx/conf.d/default.conf"
- "./drupal/cloudflare:/etc/ssl"
depends_on:
- php

drupal:
image: drupal:$DRUPAL_TAG
container_name: "${PROJECT_NAME}_drupal"
volumes:
- "./drupal/web:/var/www/html"
- "./drupal/mysql:/var/lib/mysql"
restart: always
depends_on:
- mysql
2020-02-11 21:21:43 +08:00
回复了 programV2 创建的主题 程序员 docker 容器挂载 volume 的目录权限问题
@anguiao 谢谢 ! 请问 1.我现在在主机新建普通用户 foo: useradd -m -s -u 2005 -g 2005 foo , 我建了 3 个 docker 容器:Nginx,Drupal, MySQL, 其中 Nginx 和 Drupal 容器都是挂载到 ./project/web , 这样我是不是需要同时改这两个容器的 uid gid? 分别进这两个容器执行下列命令吗?

usermod -u 2005 www-data
groupmod -g 2005 www-data
find / -user 82 -exec chown -h www-data {} \;
find / -group 82 -exec chgrp -h www-data {} \;

ps: 我刚进 nginx 容器发现没有 www-data 这个用户名,请问 nginx 服务访问 /project/web 用的是哪个用户名?

2. 改完 uid gid 后我在主机上执行 chmod -R 755 ./project/web 及 chown -R foo:foo ./project/web
为了减少网站被黑掉或挂马的危险, 还有什么地方该加固的吗? 我主机已经改成证书登陆了. 谢谢 V 友指点!
1 ... 58  59  60  61  62  63  64  65  66  67 ... 77  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4111 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 00:57 · PVG 08:57 · LAX 17:57 · JFK 20:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.