Nginx Can';t从本地网络连接到我的Web服务器

Nginx Can';t从本地网络连接到我的Web服务器,nginx,dns,webserver,router,nat,Nginx,Dns,Webserver,Router,Nat,它从外部工作(ipv4) 我的nginx配置一定是一团糟,因为当我浏览192.168.xxx.xxx(我的Web服务器地址)时,我会被转发到我主页的DNS。即使我在Web服务器本身的浏览器栏中使用“localhost”或“0.0.0.0”,它也不起作用 有人能告诉我如何妥善解决这个问题吗?如果我插入除“cooldomain.com”以外的任何内容,从外部将无法访问它,对吗?但必须有一个解决办法 nginx服务器运行在基于官方nginx映像的docker容器中 这是我的nginx配置文件: ser

它从外部工作(ipv4)

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

有人能告诉我如何妥善解决这个问题吗?如果我插入除“cooldomain.com”以外的任何内容,从外部将无法访问它,对吗?但必须有一个解决办法

nginx服务器运行在基于官方nginx映像的docker容器中

这是我的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分钟前,上升14分钟0.0.0.0:80->80/tcp,0.0.0.0:443->443/tcp web服务器
(很遗憾,这不是复制粘贴)

curl-v的输出:


我设法解决了这个问题。我不知道这是否是正确的方法,但它确实起到了作用

我在服务器块之前添加了另一个服务器块,它具有默认的\u服务器前缀

如果你有更好的想法,请随意写一个答案。:)

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

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;
    }
}

我设法解决了这个问题。我不知道这是否是正确的方法,但它确实起到了作用

我在服务器块之前添加了另一个服务器块,它具有默认的\u服务器前缀

如果你有更好的想法,请随意写一个答案。:)

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

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;
    }
}

这是在虚拟机中运行的吗?请详细说明基础结构您有一个重定向到
服务器名称的
if
块-如果删除它会发生什么情况?@TarunLalwani在docker容器中,是的。:)将此添加到问题中。@RichardSmith然后,http连接是允许的,不能转发到https。请添加
docker ps
的输出,并告诉您是否正在docker主机系统上测试本地主机,它本身是否在VM中运行?请详细说明基础结构您有一个重定向到
服务器名称的
if
块-如果删除它会发生什么情况?@TarunLalwani在docker容器中,是的。:)将此添加到问题中。@RichardSmith然后,http连接是允许的,不能转发到https。请添加
docker ps
的输出,并且请说明您是否正在docker主机系统本身上测试本地主机