Nginx Docker无法通过server_name访问服务器

时间:2017-12-11 17:25:01

标签: ssl docker nginx

我的Nginx配置存在问题,我无法设置我的server_name。 我尝试在里面构建Nginx配置的docker容器。

Dockerfile的身体。

FROM nginx

RUN rm -rf /etc/nginx/conf.d/*

RUN mkdir /etc/nginx/ssl
RUN chown -R root:root /etc/nginx/ssl
RUN chmod -R 600 /etc/nginx/ssl
COPY etc/ssl/certs/qwobbleprod.crt /etc/nginx/ssl
COPY etc/ssl/certs/app.qwobble.com.key /etc/nginx/ssl

COPY nginx/default.conf /etc/nginx/conf.d/

COPY dist /usr/share/nginx/html

EXPOSE 443

和我的Nginx配置文件 - >

server {
  listen      443 ssl default_server;
  root        /usr/share/nginx/html;

  server_name blabla.com www.blabla.com;

  access_log  /var/log/nginx/nginx.access.log;
  error_log   /var/log/nginx/nginx.error.log;

  ssl on;
  ssl_certificate /etc/nginx/ssl/blabla.crt;
  ssl_certificate_key /etc/nginx/ssl/blabla.com.key;

  sendfile on;

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

  location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ {
    expires max;
    log_not_found off;
  }

}

我尝试构建并运行我的docker容器

docker build -t <name> .
docker run -it -p 443:443 <name>

结果,我的应用程序位于https://localhost:443 但我无法通过https://blabla.com:443https://www.blabla.com:443

访问我的应用

我是使用DockerNginx的新手,我不知道出了什么问题。 我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:0)

在这种情况下,我希望您确实需要blabla.com域,并且dns(域名服务)应该指向您的外部IP地址。

然后,您必须将路由器配置为接受端口443上的连接(您所需的)并将其指向(运行端口转发)到运行实际运行的端口上的docker镜像的计算机。

可能还需要在计算机泊坞窗上运行防火墙设置。

我看到你也想听https,所以你可能需要一些证书。

或者如果你想伪造它,你可以编辑你的hosts文件(在mac或linux /etc/hosts上)并添加如下条目:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

127.0.0.1 blabla.com

但现在blabla.com只适用于你的机器...

希望有所帮助