zoukankan      html  css  js  c++  java
  • docker部署nginx,配置SSL证书实现https

    一、拉镜像

    #docker pull nginx

    二、创建并启动容器

    docker run -p 8443:443 --name nginx8443 
    -v /usr/local/docker/nginx8443/html:/usr/share/nginx/html 
    -v /usr/local/docker/nginx8443/logs:/var/log/nginx 
    -v /usr/local/docker/nginx8443/conf/nginx.conf:/etc/nginx/nginx.conf 
    -v /usr/local/docker/nginx8443/conf/cert:/etc/nginx/cert 
    -v /etc/localtime:/etc/localtime 
    -d nginx

    volume映射参数:
    /usr/share/nginx/html:部署网站的根目录
    /etc/nginx/nginx.conf:nginx配置文件
    /etc/nginx/cert:证书存放目录

    说明:因为服务器上的443端口已经被其他项目占用,这里使用8443端口来部署,记得打开防火墙端口限制。运行时会报如下错误:

    这是由于/etc/nginx/nginx.conf是目录,却被映射到文件。只需要到/usr/local/docker/nginx8443/conf/目录下删除nginx.conf目录,然后新建一个nginx.conf配置文件即可,见第三步。

    三、添加配置文件

    到/usr/local/docker/nginx8443/conf/目录下删除nginx.conf目录,然后新建一个nginx.conf配置文件,内容如下:

    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        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;
    	
    	ssl on;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;
     
        ssl_certificate /etc/nginx/cert/xxx.pem;     		#证书路径
        ssl_certificate_key /etc/nginx/cert/xxx.key; 		#请求认证 key 的路径
    
    	server {
    		listen	443;   #监听端口,ssl默认443端口。如果需要配置多个端口,可以继续添加server,用不同的端口就行
    		server_name  www.xxx.com;   #服务器域名,需要和申请的证书匹配
    		
    		location / {
    			root  /usr/share/nginx/html;  #网站根目录,和容器创建时指定的位置一致
    			index index.html index.htm;
    		}
    	}
    }

    添加完配置文件后,重启nginx容器,并检查下日志看是否有error。

    #docker restart nginx8443
    #docker logs nginx8843

    四、测试

    重启容器,一切正常后,在/usr/local/docker/nginx8443/html目录下,新建一个index.html,输入hello world!,浏览器访问https://www.xxx.com:8443,即可正常访问。

  • 相关阅读:
    c# Java 静态方法 并发问题
    最效率分页查询
    Hibernate中对象的三种状态
    Spring框架概述
    扫盲Cookies简单理解——关于IE浏览器隐私设置
    实例分析Struts的由来和概述
    操作系统——存储
    Hibernate概述
    操作系统——进程部分
    操作系统——进程死锁
  • 原文地址:https://www.cnblogs.com/alan6/p/13397443.html
Copyright © 2011-2022 走看看