nginx修改http协议为2.0 & docker添加端口到已运行容器中
1、先查看nginx版本
2.0协议的参数为:–with-http_v2_module 如果查看的结果中没有这个参数则目前不支持2.0 后续编译后支持
#进入容器
docker exec -it webpro-nginx bash
cd /usr/local/nginx
#此命令可查看出nginx版本以及编译参数
./sbin/nginx -V
nginx version: nginx/1.15.2
#停止nginx
./sbin/nginx -s stop
2、编译新nginx
注意:这里 --prefix=这里还是nginx现在安装目录;执行make,不要执行make install
#上传相同版本的源码包到服务器后并解压
docker cp nginx-1.15.2.tar.gz webpro-nginx:/tmp/
docker exec -it webpro-nginx bash
cd /tmp
tar -zxf nginx-1.15.2.tar.gz
cd nginx-1.15.2
#重新编译
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-http_v2_module
#执行编译
make
#在源码包现在目录下objs有个nginx可执行程序复制到nginx目录
cp objs/nginx /usr/local/nginx/sbin/
3.如果没有正式证书可以生成自定义证书(可选)
#创建秘钥目录
mkdir /usr/local/nginx/keys
cd /usr/local/nginx/keys
#生成一个key,会让输入一个密码,输入密码时候记住密码
openssl genrsa -des3 -out ssl.key 4096
mv ssl.key ssla.key
#输出一个不要密码的key
openssl rsa -in ssla.key -out ssl.key
rm ssla.key
#然后根据这个key文件生成证书请求文件
openssl req -new -key ssl.key -out ssl.csr
#最后根据这2个文件(ssl.key ssl.csr)生成crt证书文件
openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt
3、编辑nginx配置文件
cd /usr/local/nginx
vi conf.d/webpro-private.conf
#添加下列内容
listen 443 ssl http2;
server_name webpro-nginx #上边生成证书写授权网址那写此地址
ssl_certificate "/usr/local/nginx/keys/ssl.crt";
ssl_certificate_key "/usr/local/nginx/keys/ssl.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
docker添加协议到已运行容器中
1、查看容器
#查看nginx容器id
docker ps
58860aec140a harbor.raykite.com/webpro/webpro_nginx:v3 "/root/run.sh" 10 months ago Up 5 days 0.0.0.0:80-82->80-82/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp webpro-nginx
2、停止docker
systemctl stop docker
3、修改文件
vi /webpro-private/data/lib/docker/containers/{container_id}/hostconfig.json
找到PortBindings值,在这个json合集里边追加新端口
PortBindings":{"443/tcp":[{"HostIp":"","HostPort":"443"}],"80/tcp":[{"HostIp":"","HostPort":"80"}]}
vi /webpro-private/data/lib/docker/containers/{container_id}/config.v2.json
添加:Config->ExposedPorts
和 NetworkSettings->Ports
"ExposedPorts":{"443/tcp":{},"80/tcp":{}}
#Ports如果是空的可不用管
4、启动docker
systemctl start docker
5、查看是否新端口映射出来
docker ps