首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置从HTTP到HTTPS的Nginx路由流量和错误的请求(本地主机,没有域)

问配置从HTTP到HTTPS的Nginx路由流量和错误的请求(本地主机,没有域)
EN

Stack Overflow用户
提问于 2021-07-22 09:12:57
回答 1查看 674关注 0票数 0

我试图以一种方式配置我的Nginx,以便将所有HTTP请求重定向到HTTPS。这是一个测试环境,我没有域,因此,我不确定重定向是否能够正常工作。主机部分仅为127.0.0.1。这是当前的配置:

代码语言:javascript
复制
    server {
    listen 80;
    listen [::]:80;

    server_name _;
    return 301 https://$host$request_uri;
    }

    server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name _;
    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; 
    ...

我还尝试过:删除server_name _;将返回301放在一个位置块中;添加进一步的ssl设置,例如ssl_session_timeout、ssl_protocols、ssl_prefer_server_ciphers。ssl已被删除。

语法已经过测试,nginx重新加载,端口已经用nmap进行了测试( 80和443都是打开的)。

当我使用curl -k (因为证书是自签名的) 127.0.0.1时,我得到以下消息:

301永久移动nginx/1.14.0 (Ubuntu)

当我卷起-k 127.0.0.1:443时,我得到以下消息:

400普通HTTP请求被发送到HTTPS端口400坏请求普通HTTP请求被发送到HTTPS端口nginx/1.14.0 (Ubuntu)

有人能帮我理解我做错了什么吗?我很乐意提供更多的信息。非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 09:43:29

下面是一个为我工作的nginx配置。

代码语言:javascript
复制
upstream app {
    server app:8080;
}

server {
    listen 80;
    listen [::]:80;
    server_name webprojects-dev.co.uk;
    return 301 https://webprojects-dev.co.uk$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 http2;
    server_name webprojects-dev.co.uk;

    include /etc/nginx/common.conf;
    include /etc/nginx/ssl.conf;

    location / {
        proxy_pass http://app;
        include /etc/nginx/common_location.conf;
    }
}

在这种情况下,nginx运行在一堆码头容器中,这些容器与坞工组成联网,但这不应该对它的工作方式产生任何影响。

上游是反向代理的app容器(和端口)。

第一个服务器块将请求转发到https。正如您所看到的,我和您的主要区别是server_name是域名,并且还包含在返回301语句中。

第二个服务器块用于https。同样,server_name是一个域,但除此之外,我唯一能看到的其他区别是,我在行listen [::]:443上没有ssl。

免责声明:不是nginx方面的专家。我只是黑客入侵,直到我有一个反向代理配置,为我工作,现在我只是复制和粘贴它的一切。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68482197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档