开发者社区> 问答> 正文

Nginx 配置SSL并且完成80到8080的反向代理:报错

server {
        listen 80;
        server_name coddict.tk;
        rewrite ^(.*)$ https://$host$1 permanent;
}
server {
        listen 443;
        server_name coddict.tk;
        ssl on;
        ssl_certificate         /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key     /etc/nginx/ssl/nginx.key;
        location / {
                proxy_pass https://127.0.0.1:8080;
        }
}

上面是我新写的一个nginx的配置,我现在有一个go程序跑在网上,占用的端口是8080,之前没有用ssl的时候是可以从80反向代理到8080的,当然配置也不是上面这样的。现在加了SSL之后,就必须要通过https://www.coddickt.tk才能进行访问了。80那边监听的也用rewrite重写了所有http请求到https。为什么还是不能直接输入www.coddict.tk就是https请求呢?



展开
收起
kun坤 2020-06-14 10:17:16 2902 0
2 条回答
写回答
取消 提交回答
  • 阿里云SSL证书服务可提供Nginx服务器、Apache服务器、Tomcat服务器、IIS服务器和其他服务器类型证书下载并安装到对应的服务器中,详情请参见如何在各类服务中安装SSL证书

    2020-12-08 15:22:01
    赞同 展开评论 打赏
  • server {
            listen       80;
            server_name  coddict.tk;
            rewrite ^(.*)$ https://$host$1 permanent;
        }
    
        server {
            listen       443;
            server_name  coddict.tk;
    
            ssl                  on;
            ssl_certificate      cert.pem;
            ssl_certificate_key  cert.key;
    
            location / {
                proxy_pass https://127.0.0.1:8080;
            }
        }
    
        server {
            listen       8080;
            server_name  coddict.tk;
    
            ssl                  on;
            ssl_certificate      cert.pem;
            ssl_certificate_key  cert.key;
    
            location / {
                root   /usr/share/nginx/html/ssl_8080;
                index  index.html index.htm;
            }
        }



    我测试这样,访问http://www.coddict.tk

    返回的URL是:https://www.coddict.tk/

    返回的内容是:https://www.coddict.tk:8080/

    测试没任何问题。


    [lvfifi@archlinux ~]$ curl -I http://www.coddict.tk
    HTTP/1.1 301 Moved Permanently
    Server: nginx/1.6.1
    Date: Sun, 10 Aug 2014 07:16:24 GMT
    Content-Type: text/html
    Content-Length: 184
    Connection: keep-alive
    Location: https://www.coddict.tk/
    
    [lvfifi@archlinux ~]$ curl  -kL http://www.coddict.tk
    ssl 8080
    [lvfifi@archlinux ~]$ 
    
    



    ######回复 @Lvfifi : 是的。。最后问题就是www这个没有在server_name那边加上- -现在就可以了~谢啦~######我为了测试方便才用nginx监听了8080。这个不是必须的。 只是为了说明问题。nginx配置是没问题的。 注意,最好在server_name的地方显式增加www.coddict.tk的域名绑定,避免可能出现的错误。######应该不能用nginx 再listen了吧?######我的8080端口是用supervisor开的。######那个肯定是不行的,你直接输入www.coddict.tk默认就是走的http协议 ,如果你要让其走https,你必须针对这个写一个rewrite规则,我们的后台就是这样做的,还做了限定,只能走内网。######对啊。。我的80端口那边不是写了一个rewrite么?看见了吗?######s不用证书
    2020-06-14 10:17:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载