nginx配置后无法正常使用

使用的是 windows nginx-1.21.6 配置配置文件如下:

img

配置完后重启nginx服务后浏览器访问这个地址但是却打不开,如下:

img

明显已经跳转了,但是不知道为什么会出现 443 这个端口,确认防火墙都关闭了,求指教怎么解决!

小魔女参考了bing和GPT部分内容调写:
可能是nginx的配置文件有问题,需要检查一下配置文件中的server_name,listen,location等参数是否正确,是否符合nginx配置规范,是否有语法错误。另外,可以查看nginx的error日志,看看是否有报错信息,从而定位问题。另外,可以使用telnet命令,查看服务器是否正常开启,比如telnet 127.0.0.1 80,如果返回的是:Connected to 127.0.0.1.,说明服务器已经正常开启,可以正常访问,如果返回的是:Could not open connection to the host,on port 80:Connect failed,说明服务器没有正常开启,可能是端口被占用,或者是防火墙没有正确配置等。
回答不易,记得采纳呀。

参考GPT和自己的思路:根据您提供的配置文件,Nginx 配置看起来没有问题。如果浏览器显示的是 HTTPS,可能是因为浏览器默认使用了 HTTPS 协议,而不是 HTTP。

您可以尝试在浏览器中手动输入HTTP协议的地址,例如:http://192.168.1.1,看是否能够访问。

如果仍然无法访问,您可以检查 Nginx 错误日志,以确定是否有任何错误发生。默认情况下,Nginx 日志位于 /var/log/nginx/error.log。

如果没有错误日志或者日志中没有有用信息,您可以尝试使用 curl 命令从命令行测试服务器是否正常响应。例如,可以运行以下命令:

curl -I http://192.168.1.1/


这将发送一个 HTTP 请求并返回服务器的响应头信息。如果服务器没有响应,可能是服务器的网络配置出现了问题,需要进一步排查。

希望这些信息对您有所帮助!

参考这个试试,如果不行,把443改成其它端口,如8443


server {
    listen       80;
    server_name  192.168.1.1;
    return 301 http://$server_name$request_uri;
}

server {
    listen       443 ssl;
    server_name  192.168.1.1;
    ...
}

是你的192.168.1.1:80 跳到你的 http:// myserver 服务接口去 你为啥直接访问转发的地址

http:// myserver 改成 myserver,把http://去掉 试试。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,你的配置文件有一个错误,就是把两个 server 配置放在了同一个 http 块中,应该把它们放在两个不同的 server 块中。

其次,你的端口问题是因为你把 ssl 参数写到了 http 块中,导致 nginx 在监听 443 端口时,自动开启了 https 协议。如果你只是想用 http 协议访问的话,需要把 ssl 参数从 http 块中移除,放到 server 块中。

以下是修改过后的配置文件:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

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

    server {
        listen 80;
        server_name domain.com;
        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl;
        server_name domain.com;

        ssl_certificate      domain.crt;
        ssl_certificate_key  domain.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }

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

修改后的配置文件解释:

  • 第一个 server 块是默认的 server 块,用于处理在域名请求中未指定的虚拟主机,监听的是80端口,如果没有指定的话,就会使用此 server 块。
  • 第二个 server 块用于将 HTTP 请求重定向到 HTTPS,这里只需要监听80端口即可,不需要 SSL 参数。
  • 第三个 server 块是使用 HTTPS 协议的,监听 443 端口,并使用了 SSL 协议,这里只处理 domain.com 的请求。

至于为什么会出现 443 端口,这是因为在监听 80 端口的 server 块中,你使用了 $host 变量进行重定向,它会自动将请求转向到域名后面的默认端口。由于你监听的是80端口,所以请求会被重定向到443端口。

同时需要注意的是,这里的 SSL 证书和密钥是需要自己提供的,不同的配置可能会要求不同的证书和密钥,需要根据实际情况进行调整。
如果我的回答解决了您的问题,请采纳!

你配置的是80,用http访问
等你配置ssl证书后,在用https访问

你这个访问的URL就不对,你是80的负载均衡端口,映射到后端的8080端口,你要通过server_name指定的ip或者域名去访问,而且端口也不对,你访问的应该是80而不是443