2015-06-22 53 views
1

首先我的问题是不同的。纯HTTP请求发送到HTTPS端口(NGINX)

我已经使用listen 443 default ssl;listen 443 ssl;和注释掉#但似乎没有任何工作。端口80工作正常,但在端口443我得到这个错误。

目前这是nginx的默认文件。

server { 
    listen 80; 
    listen 443 ssl; 
    #listen 443 default ssl; 
    server_name .******.org; 
    keepalive_timeout 70; 

    #ssl on; 
    ssl_certificate /etc/ssl/private/lol/www.*******.crt; 
    ssl_certificate_key /etc/ssl/private/lol/www.********.key; 
    ssl_protocols  SSLv3 TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   RC4:HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

ssl_protocols我也试着只用SSLv3 TLSv1但它一样。我的nginx版本是1.2.1。 我甚至在这里经历了许多在线网站,但我认为我的问题没有被任何由不同极客提到的方法解决。

因此,最后我在这里。 有什么建议吗?

P.S:我正在使用cloudflare,但在那里我已经关闭了通用SSL,因为我想使用其他ssl。

+0

你想让你的所有HTTP请求都通过你的SSL服务器吗?或者有两个单独的域名,即http://example.org和https://example.org – ajtrichards

+1

在这个问题中,你写了这个错误。你在说什么错误?如果你可以添加你的错误,事情会更好理解。 –

+0

@ObscureGeek'纯HTTP请求已发送到HTTPS端口'<<这是错误。我在港口443收到的。 – nix

回答

5

你应该写两个服务器块一个HTTP和一个像HTTPS:

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 

    root /var/www/public/; 
    index index.html; 
    #other settings 
} 

server { 
    listen 443; 
    server_name localhost; 

    root /var/www/public/test/; 
    index index.html; 

    ssl on; 
    ssl_certificate /etc/nginx/certs/wss.pem; 
    ssl_certificate_key /etc/nginx/certs/wss.pem; 
    #other settings 
} 

我与default nginx的设置,试了一下,两个端口工作正常。

-1

您收到的错误很可能是因为您向SSL端口发送了未加密的HTTP请求。

喜欢的东西

wget http://example.com:443/ 

这是一个客户问题(服务器只是告诉你,它拒绝到待加密的频道回答非加密消息)

2

如果你是使用Google Compute Engine/Google HTTP负载均衡器遇到此问题...确保您的实例组设置具有单独的命名端口,用于http:80和https:443. 或者它将随机选择一个端口。

在我的情况下,由于最初设置HTTP负载均衡器时它仍处于测试阶段。然后,当我添加另一个负载均衡器时,刷新设置并开始随机失败。

由于我只有Nginx设置了端口80的虚拟主机,并且它试图将HTTP请求推送到网络盒子上的端口80,所以它没有50%的时间。