Koajs路由使用HTTP,但使用HTTPS断开

时间:2017-04-08 18:29:25

标签: node.js ssl nginx https koa

我正在使用letsencrypt在我的koa2 API上设置HTTPS,使用this DigitalOcean指南的最后一部分。我正在使用nginx进行反向代理。一切都可以正常使用HTTP但是使用HTTPS我的路由被破坏了,因为这是我第一次设置HTTPS,所以我很难找到原因。例如,使用普通HTTP向List发出请求,我会看到类似

的请求
<?php 
/* Template Name: FirstStarRatingSystem */      
?>

<div class="t1">
<button class="add_form_field">Add New Field &nbsp; <span style="font-
size:16px; font-weight:bold;">+ </span></button><br>    
<input type="text" class="t1" name="fname1" id="text1" placeholder="First 
Rating"></div>
<div class="rating1"> 
<legend>Please rate:</legend>
<input type="radio" class="rating1" id="star5" name="rating1" value="5" />
<label for="star5" title="Rocks!">5 stars</label>
<input type="radio" class="rating1" id="star4" name="rating1" value="4" />
<label for="star4" title="Pretty good">4 stars</label>
<input type="radio" class="rating1" id="star3" name="rating1" value="3" />
<label for="star3" title="Meh">3 stars</label>
<input type="radio" class="rating1" id="star2" name="rating1" value="2" />
<label for="star2" title="Kinda bad">2 stars</label>
<input type="radio" class="rating1" id="star1" name="rating1" value="1" />
<label for="star1" title="Sucks big time">1 star</label>
</div>
<br><br>
<br><br>
<br><br>
<div class="t2"></div>
<div class="rating2"></div>

<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script>

$(document).ready(function() {
var max_fields=2;
var t2=$(".t2");
var rating2=$(".rating2");
var add_button=$(".add_form_field");

var x=1;
$(add_button).click(function(e){
e.preventDefault();
if(x < max_fields){
x++;
if(x==2)

$(t2).append('<div class="t2"><input type="text" class="t2" name="fname2" 
id="text2" placeholder="Second Rating"></div>'); //add input box 

$(rating2).append('<div class="rating2"><legend>Please rate1:</legend> 
<input type="radio" class="rating2" id="1star5" name="rating2" value="5" /> 
<label for="1star5" title="Rocks!">5 stars</label> <input type="radio" 
class="rating2" id="1star4" name="rating2" value="4" /> <label for="1star4" 
title="Pretty good">4 stars</label> <input type="radio" class="rating2" 
id="1star3" name="rating2" value="3" /> <label for="1star3" title="Meh">3 
stars</label> <input type="radio" class="rating2" id="1star2" name="rating2" 
value="2" /> <label for="1star2" title="Kinda bad">2 stars</label> <input 
type="radio" class="rating2" id="1star1" name="rating2" value="1" /> <label 
for="1star1" title="Sucks big time">1 star</label><a href="#" 
class="delete">Delete</a></div>'); //add 5 star rating.
}
 else
 {
  alert('You Reached the limits')
 }
 });

  $(rating2).on("click",".delete", function(e){
    e.preventDefault(); 
    $(t2).remove();
    $(this).parent('div').remove();

     x--;
   })
  });

  </script>

  <style>NECESSARY CSS</style>

使用HTTPS看起来像

http://myapi.com/api/some-route

request.url很时髦,缺少原始标头。我无法击中任何路线。我想知道我的nginx配置是否存在问题,但是很难搞清楚从哪里开始。

这是nginx配置,大多只是从the DigitalOcean guide

复制而来
{ 
  request: { 
  method: 'GET', 
  url: '/api/some-route', 
  header: { 
    'origin': 'https://myapi.com', 
    accept: '*/*' 
  } 
}

1 个答案:

答案 0 :(得分:0)

尾随斜杠在NGINX配置中具有特殊含义。我相信在proxy_pass中添加一个尾部斜杠(或者更确切地说,一个以斜杠结尾的路径)会设置新的&#34; root&#34; NGINX用来将请求传递给。

因此,如果您使用http://localhost:3000/,NGINX会将与https://your-site/api/some-route匹配的请求传递给http://localhost:3000//some-route(因为它使用/作为新根。

如果您没有添加尾部斜杠,NGINX将按预期工作并将请求传递给http://localhost:3000/api/some-route

proxy_pass http://localhost:3000;