当前位置: 首页 > 面试题库 >

Docker容器内的Nginx SSL

费秦迟
2023-03-14
问题内容

我已经配置了一个Docker容器来运行Nginx并设置/ etc / nginx / sites-available / default文件,如下所示

server 
{
 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on;

 root /usr/share/nginx/html;
 index index.php index.html index.htm;

 server_name example.com;

 location / {
            try_files $uri $uri/ /index.html;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
          root /usr/share/nginx/html;
    }


    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
        include fastcgi_params;
 }

}

server 
{
 listen 443;

 root /usr/share/nginx/html;
 index index.php index.html index.htm;

 server_name example.com;

 ssl    on;
 ssl_certificate    /etc/ssl/certs/ssl-cert-snakeoil.pem;
 ssl_certificate_key    /etc/ssl/private/ssl-cert-snakeoil.key;


 location / {
            try_files $uri $uri/ /index.html;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
          root /usr/share/nginx/html;
    }


location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
        include fastcgi_params;
 }


}

运行docker容器时,我在主机上映射了/ etc / ssl / certs和/ etc / ssl / private文件夹

docker run -dt -p 8080:443 -p 8081:80 -v /t-base/log:/var/log/nginx -v
/etc/ssl/certs:/etc/ssl/certs -v /etc/ssl/private:/etc/ssl/private nginx

Docker ps shows

Up n minutes 0.0.0.0:8081->80/tcp 0.0.0.0:8080->443/tcp <container-name>

并且映射的/ t-base / log文件夹中的nginx错误日志文件保持为空。

docker exec -it <container-name> /bin/bash

其次是

service nginx status

刚回来并说nginx正在运行。

以上所有内容都表明一切正常。但是,我发现虽然可以浏览到

http://example.com:8080

打开默认页面

https://example.com:8081

Chrome浏览器向我显示了其默认的“悲伤笑脸”错误页面。我看不到我在做什么错。非常感谢您的帮助。


问题答案:

您已互换端口。根据此命令行-p 8080:443 -p 8081:80,您应该执行以下操作:

https://example.com:8080注意,这是http 小号

http://example.com:8081

这应该工作



 类似资料:
  • 问题内容: 我有一个Wordpress / MySQL docker容器,用于开发主题和插件。我在localhost:8000上访问它。 它使用了Gulp构建过程,我正在尝试将browsersync添加到组合中。我很难让browsersync真正代理出容器。从Gulp输出中,我可以看到它正在生成更改,只是实际上并未在浏览器中进行任何更改。 这是我的docker-compose.yml,gulpfi

  • 问题内容: 我使用的是Docker映像,该映像是使用USER命令构建的,以使用名为的非root用户。在容器内,我是“ dev”,但我想编辑该文件。 所以我需要成为根。我正在尝试su命令,但要求输入root密码。 Docker容器中默认的root用户密码是什么? 问题答案: 最终,我决定重建我的Docker映像,以便通过我知道的方式更改root密码。 要么

  • 问题内容: 带有 Windows的Docker桌面的Docker Windows容器是否具有默认内存限制?我有一个在容器中运行时崩溃的应用程序,但是当我尝试为命令指定参数时,它似乎运行良好。至少在以前崩溃的情况下。这给我的印象是有默认的内存限制,但是我在文档中找不到它。所以我的问题是是否存在内存限制,并且是否在记录的地方? 问题答案: 根据关于Windows的Docker Github问题的讨论(

  • 要运行测试文件,Flask应用程序需要连接到Redis。我尝试将这些URL用于redis主机,如localhost:6379,redis:6379,0.0.0.0:6379,但都没有用。他们都告诉我连接错误或连接拒绝。 知道如何从jenkins docker容器中连接到redis吗?

  • 问题内容: 我正在为Symfony应用程序构建docker映像。在此图像中,我想将Symfony日志流式传输到stdout。因此,类似于nginx日志的配置方式,我在Dockerfile中添加了以下内容: 在容器内,我可以看到以下内容: 但是,该应用程序引发以下错误: PHP致命错误:无法打开消息“流或文件“ /var/www/project/app/logs/prod.log”的未捕获异常’Un

  • 问题内容: 我一直在尝试获取基本的nodeJS api以连接到mongo容器。两种服务都在docker- compose.yml文件中定义。我在这里和码头工人论坛上都读过无数类似的问题,所有这些都表明问题是您的mongo连接URI。这不是我的问题,您将在下面看到。 docker-compose.yml Docker文件 db / mongoose.js 设置mongodb连接 但是无论什么api容