java - 将 Nginx 移动为使用 HTTPS 的问题无法解决(3 : Host not found)

标签 java spring docker nginx

所以我有以下 nginx 配置:

events {
  worker_connections 1024;
}

http {

  server {
    listen 80 default_server;
    charset utf-8;
    access_log off;
    try_files $uri $uri/ =404;
    #use google as dns
    resolver 8.8.8.8;
    server_name www.workaround.xyz workaround.xyz;
    return 301 https://$server_name$request_uri;
  }

  server {
        listen 443 ssl;
        charset utf-8;
        access_log off;
        try_files $uri $uri/ =404;
        #use google as dns
        resolver 8.8.8.8;
        server_name www.workaround.xyz workaround.xyz;

        ssl_certificate /etc/letsencrypt/live/workaround.xyz-0001/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/workaround.xyz-0001/privkey.pem;

        location / {
            proxy_pass $scheme://workaround:8085/;
        }

        location ^~ {
            proxy_pass              $scheme://workaround:8085/$request_uri;
            proxy_redirect  off;
            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;
            expires 30d;
         }
    }


}

这是我尝试将内容转移到使用 HTTPS,并支持 www.域的前缀。在这次尝试中我得到:

2019/07/03 20:55:38 [error] 6#6: *3 workaround could not be resolved (3: Host not found), client: XXXXX_SOME IP_XXXX, server: www.workaround.xyz, request: "GET / HTTP/1.1", host: "www.workaround.xyz"

尝试了多种不同的方法,每次弹出无法解析的变体时,任何人都知道我做错了什么以及我可以改进/修复什么以使其与 https 正常工作?

工作 HTTP 版本是这样的:

events {
  worker_connections 1024;
}

http {

  server {
        listen 80;
        charset utf-8;
        access_log off;
        try_files $uri $uri/ =404;

        location / {
            proxy_pass http://workaround:8085/;
        }

        location ^~ {
            proxy_pass              $scheme://workaround:8085/$request_uri;
            proxy_redirect  off;
            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;
            expires 30d;
         }
    }


}

最佳答案

明白了。

events {
  worker_connections 1024;
}

http {

  server {
    listen 80 default_server;
    charset utf-8;
    access_log off;
    try_files $uri $uri/ =404;
    #use google as dns
    resolver 8.8.8.8;
    server_name workaround.xyz;
    return 301 https://$server_name$request_uri;
  }

  server {
        listen 443 ssl;
        charset utf-8;
        access_log off;
        try_files $uri $uri/ =404;
        server_name workaround.xyz;

        ssl_certificate /etc/letsencrypt/live/workaround.xyz-0001/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/workaround.xyz-0001/privkey.pem;

        if ($host = www.$server_name) {
            rewrite ^(.*) https://$server_name$request_uri? permanent;
        }

        location / {
            proxy_pass http://workaround:8085/;
        }

        location ^~ {
            proxy_pass              http://workaround:8085/$request_uri;
            proxy_redirect  off;
            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;
            expires 30d;
         }
    }


}

关于java - 将 Nginx 移动为使用 HTTPS 的问题无法解决(3 : Host not found),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56877906/

相关文章:

java - 访问其他类中的对象

java - 使用 Cassandra JMeter 时无响应数据

java - Spring应用服务器通过websocket向客户端传输数据

docker - 使用 docker compose 抑制 docker 网络以进行测试执行隔离

c# - 来自 Docker 容器中 LibreOffice Headless 的 TCP SYN_SENT。

java - 从上次测试中恢复测试用例

java - 如何检查字符串是否为日期

spring boot打包后找不到资源文件

java - org.apache.jasper.JasperException : Unable to compile class for JSP encountered when using spring

docker - 如何映射gentics/mesh docker镜像的配置目录?