2016-11-26 7 views
2

- ゴーサーバーへのリスナーのhttpHTTPSとして。 Nginxは、http + httpsの着信要求を処理するように構成されています。順番に証明書。 別々のサーバーを使用すると、httpsプロトコルで照会した結果が完全に実行されます。 127.0.0.1:54037からTLSハンドシェイクエラー:TLS:私はnginxの HTTPS は、サーバーからの応答とサーバゴーGolang + nginxの+ HTTPS私が持っている

」HTTPを取得していないプロキシを使用する場合ただし、最初のレコードを はありませんTLSハンドシェイクのように見えない問題がある可能性がどのような

クライアントゴー

:?

package main 

import (
    "net/http" 
    "log" 

) 

func HelloSSLServer(w http.ResponseWriter, req *http.Request) { 
    w.Header().Set("Content-Type", "text/plain") 
    w.Write([]byte("This is an example server.\n")) 
    // fmt.Fprintf(w, "This is an example server.\n") 
    // io.WriteString(w, "This is an example server.\n") 
} 

func main() { 
    http.HandleFunc("/", HelloSSLServer) 
    go http.ListenAndServe("192.168.1.2:80", nil) 
    err := http.ListenAndServeTLS("localhost:9007", "/etc/letsencrypt/live/somedomain/fullchain.pem", "/etc/letsencrypt/live/somedomain/privkey.pem", nil) 

    if err != nil { 
     log.Fatal("ListenAndServe: ", err) 
    } 



} 

nginxの設定ファイル:proxy_passと

server { 
    listen  192.168.1.2:80; 
    server_name somedomain; 
    rewrite^https://$host$request_uri? permanent;  
} 
server { 
    listen  192.168.1.2:443 ssl; 
    server_name somedomain; 
    access_log /var/log/nginx/dom_access.log; 
    error_log  /var/log/nginx/dom_error.log; 
    ssl_certificate  /stuff/ssl/domain.cert; 
    ssl_certificate_key /stuff/ssl/private.cert; 
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; 


    location/
    { 
     proxy_pass http://localhost:9007; 
#  proxy_redirect http://localhost:1500 http://site1; 
     proxy_cookie_domain localhost somedomain; 
     proxy_buffering off; 

     proxy_http_version 1.1; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Client-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
    } 
} 

答えて

4

使用https

location/
{ 
    proxy_pass https://localhost:9007; 
    ... 
} 
+1

c。疲れた目は働くから。ありがとうございました。 – Spouk

0

nginxのの.configファイルには、この

server { 
     listen 443 ssl http2; 
     listen 80; 
     server_name www.mojotv.cn; 
     ssl_certificate  /home/go/src/my_go_web/ssl/**.pem; 
     ssl_certificate_key /home/go/src/my_go_web/ssl/**.key; 
     ssl_session_timeout 5m; 
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; 
     ssl_prefer_server_ciphers on; 
     location /(css|js|fonts|img)/ { 
      access_log off; 
      expires 1d; 
      root "/home/go/src/my_go_web/static"; 
      try_files $uri @backend; 
     } 
     location/{ 
      try_files /_not_exists_ @backend; 
     } 
     location @backend { 
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_set_header Host $http_host; 
      proxy_pass http://127.0.0.1:********; 
     } 
     access_log /home/wwwroot/www.mojotv.cn.log;## nginx log path 
} 

the golang web app with http2 ssl feature shiped with nginx

0

は私が取得好きなはずです余分な設定を持たないより基本的なGoサーバのためのOPへの同様のエラーメッセージ。

TLS:とURLのポート番号:最初のレコードは、私の一時修正がテストURLは「// https」の両方を含んでいることを確認するために、単純だった

TLSハンドシェイクのようには見えません。

は動作しませんでした -

IPアドレスは動作しませんでした -

https://ipaddressが働いていた - それは、より高度な設定まで、テストのためにやるhttps://ipaddress:8081

。これを投稿するだけで、トラブルシューティングで他の人を助けることができます。

関連する問題