我有一个官方的Nginx映像,其中添加了证书和.conf
文件,因此它通过端口443和80进行侦听。我刚刚在Nginx的官方dockerfile上添加了
ADD gp-search2.conf /etc/nginx/conf.d/
ADD STAR.GREY.COM.crt /etc/ssl/certs/
ADD wildcard_grey.com.key /etc/ssl/certs/
我正在使用Azure容器实例,并使用此命令成功创建了容器
az container create --resource-group RG --name nginx --image xxxxx.azurecr.io/api-s:nginx4 --cpu 1 --memory 1.5 --registry-username xxxxxx --registry-password xxxxxxxxxx --ip-address public --ports 443 --dns-name-label prod3
此后,我成功地在azure上创建了一个具有公共IP和我提供的prod3eastus.azurecontainer.io
的FQDN的容器。另外,我在 Dynect.net 中为我们拥有的域创建一个新节点:newcontainer.example.com
,并在其中添加新容器的公共IP,这样我在容器上拥有的有效证书就可以了比域。
如果使用公共FQDN或Azure提供的IP访问容器,则可以访问ok,但是如果尝试使用HTTPS访问,则会得到:
此页面不起作用如果问题仍然存在,请与网站所有者联系。 HTTP错误400
和
*警告:无法验证 newcontainer.example.com 的证书,该证书由'CN = Network Solutions OV Server CA 2,O = Network Solutions LLC,L = Herndon,ST颁发= VA,C = US':无法在本地验证发行人的权限。*
尽管如此:
file.conf
上指示的路径相同(如果没有,容器将无法使用)。这是我拥有的.conf
文件:
upstream searchapl {
server 40.x.x.x:8080 fail_timeout=0;
}
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name _;
#status_zone go-backend-servers;
ssl_certificate /etc/ssl/certs/STAR.client.COM.pem;
ssl_certificate_key /etc/ssl/certs/STAR.client.COM.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://searchapl;
proxy_redirect http:// https://;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# time out settings
proxy_connect_timeout 159s;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_pass_header Set-Cookie;
}
}
此Nginx用作反向代理,重定向到可以正常工作的Tomcat容器。如果输入容器IP,重定向将成功进行。我带我去了Tomcat。但是超过443,我会收到证书问题。我还能检查什么?证书和密钥具有读取权限。
好,现在我向前走了一步,但仍然出现错误。我创建了.pem文件而不是.crt文件,其中包含了所有主证书和中间+根目录。
不再出现无法检查证书颁发机构的错误,但是现在我得到:
***--2018-08-24 21:05:05-- https://xxxxxxxxxxxx.com/
Resolving xxxxxxxxxxxx.com (gp_searchv2.grey.com)... 23.x.x.x
Connecting to xxxxxxxxx.com (xxxxxxxxxx.com)|23.x.x.x|:443... connected.
HTTP request sent, awaiting response... 400
2018-08-24 21:05:05 ERROR 400: (no description).***
答案 0 :(得分:0)
无意中回答了我自己的Anser。我把我的答案放在编辑上。我无法删除它。