2017-09-18 143 views
0

它从外部工作(ipv4)。无法从本地网络内连接到我的网络服务器

我的nginx配置已经搞乱了,因为当我浏览192.168.xxx.xxx(我的web服务器的地址)时,我被转发到我的主页的DNS。即使我在Web服务器本身的浏览器栏中使用“localhost”或“0.0.0.0”,它也不起作用。

谁能告诉我如何正确解决这个问题?如果我插入“cooldomain.com”以外的任何内容,它将无法从外部访问,对吧?但必须有一个解决方案。

nginx服务器运行在Docker容器中,该容器基于官方的nginx镜像。

这是我nginx的配置文件:

server { 
    listen 80; 
    listen 443 ssl http2; 
    server_name cooldomain.com; 
    ssl_protocols TLSv1.2; 
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; 
    ssl_prefer_server_ciphers On; 
    ssl_certificate /usr/share/nginx/fullchain.pem; 
    ssl_certificate_key /usr/share/nginx/privkey.pem; 
    ssl_trusted_certificate /usr/share/nginx/chain.pem; 
    ssl_session_cache shared:SSL:128m; 
    add_header Strict-Transport-Security "max-age=31557600; includeSubDomains"; 
    ssl_stapling on; 
    ssl_stapling_verify on; 

    # Your favorite resolver may be used instead of the Google one below 
    # resolver 8.8.8.8; 
    # /usr/share/nginx/html; 
    # index index.html; 

    # charset koi8-r; 
    # access_log /var/log/nginx/host.access.log main; 

    location/{ 
    if ($scheme = http) { 
      return 301 https://$server_name$request_uri; 
     } 
     root /usr/share/nginx/html; 
     # index index.html index.htm; 
    try_files $uri$args $uri$args/ /index.html; 
    } 

    #error_page 404    /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 
} 

编辑:输出docker ps

faXXXXX nginx "nginx -g 'daemon off" 14 minutes ago, up 14 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp webserver (这是可悲的不是复制粘贴)

输出curl -v http://127.0.0.1

$ curl -v http://127.0.0.1 
Rebuilt URL to: http://127.0.0.1/ 
Trying 127.0.0.1... 
Connected to 127.0.0.1 (127.0.0.1) port 80 (#0) 
GET/HTTP/1.1 
Host: 127.0.0.1 
User-Agent: curl/7.47.0 
Accept: 

HTTP/1.1 301 Moved Permanently 
Server: nginx/1.13.3 
Date: Wed, 20 Sep 2017 15:46:55 GMT 
Content-Type: text/html 
Content-Length: 185 
Connection: keep-alive 
Location: https://cooldomain.com/ 
Strict-Transport-Security: max-age=31557600; includeSubDomains 

Connection #0 to host 127.0.0.1 left intact 
+0

这是在VM中运行吗?请详细介绍基础设施 –

+0

你有一个'if'块重定向到'server_name' - 如果你删除它会发生什么? –

+0

@TarunLalwani在码头集装箱中,是的。 :)添加到这个问题。 – codepleb

回答

0

我设法解决它。我不知道这是否是正确的做法,但是它能完成这项工作。

我在我的服务器块之前添加了另一个服务器块,它有default_server前缀。

如果你有更好的主意,随时写一个答案。 :)

这是我的配置文件现在的样子。注意第一个块:

server { 
    listen 80; 
    server_name 127.0.0.1 default_server; 

    location/{ 
     root /usr/share/nginx/html; 
     index index.html index.htm; 
    } 

    #error_page 404    /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 
} 

server { 
    listen 80; 
    listen 443 ssl http2; 
    server_name cooldomain.com; 
    ssl_protocols TLSv1.2; 
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; 
    ssl_prefer_server_ciphers On; 
    ssl_certificate /usr/share/nginx/fullchain.pem; 
    ssl_certificate_key /usr/share/nginx/privkey.pem; 
    ssl_trusted_certificate /usr/share/nginx/chain.pem; 
    ssl_session_cache shared:SSL:128m; 
    add_header Strict-Transport-Security "max-age=31557600; includeSubDomains"; 
    ssl_stapling on; 
    ssl_stapling_verify on; 

    # Your favorite resolver may be used instead of the Google one below 
    # resolver 8.8.8.8; 
    # /usr/share/nginx/html; 
    # index index.html; 

    # charset koi8-r; 
    # access_log /var/log/nginx/host.access.log main; 

    location/{ 
    if ($scheme = http) { 
      return 301 https://$server_name$request_uri; 
     } 
     root /usr/share/nginx/html; 
     # index index.html index.htm; 
    try_files $uri$args $uri$args/ /index.html; 
    } 

    #error_page 404    /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 
}