[英]Alexa Skill Server on node.js (express) using nginx as reverse proxy (https)
i am running a nginx
on my Debian 8.5 64bit
which is used as reverse proxy for my node applications. 我在
Debian 8.5 64bit
上运行了一个nginx
,它用作节点应用程序的反向代理。 Each request walks through my reverse proxy before getting routed to the special apps. 每个请求都会先经过我的反向代理,然后再路由到特殊应用。 Therefor i am using this config:
因此,我正在使用此配置:
upstream socket_nodes {
server 127.0.0.1:3000;
server myUrl.com:3000;
server MY.ROOTSERVER.IP.ADDRESS:3000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name myUrl.com;
return 301 https://$server_name$request_uri;
}
server {
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
include snippets/ssl-my-website.com.conf;
include snippets/ssl-params.conf;
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name www.myWebsite.com;
root /root/webserver/app/;
location ~ /.well-known {
allow all;
}
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /alexa-api/ {
proxy_pass http://localhost:3000;
}
location /at_backend/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://socket_nodes;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
Sadly this is not working. 不幸的是,这是行不通的。 I can reach my website via https ( https://www.myWebsite.com ) and it works fine.
我可以通过https( https://www.myWebsite.com )访问我的网站,并且可以正常工作。
So i changed the endpoint of my alexa skill in the Amazon Developer Console
to: https://www.myWebsite.com/alexa-api
(with and without trailing /
) but it is not working. 因此,我在
Amazon Developer Console
中将我的alexa技能的端点更改为: https://www.myWebsite.com/alexa-api
: https://www.myWebsite.com/alexa-api
(带有和不带有尾随/
),但是它不起作用。 The skill server itself worked when i used it locally and made it available via ngrok
. 当我在本地使用技能服务器并通过
ngrok
将其提供时,技能服务器本身就可以ngrok
。 What am i doing wrong here? 我在这里做错了什么?
edit: 编辑:
There is also a socket.io
server running in the same app which can be accessed from the internet (the server loggs "new client connected") - but i can not emit any events between them. 在同一应用程序中还运行着一个
socket.io
服务器,可以从互联网进行访问(服务器登录“新客户端已连接”)-但我无法在它们之间发出任何事件。 The HTTP Status Code
of the socket.io connection is (correctly) 101 Switching Protocols
. socket.io连接的
HTTP Status Code
是(正确) 101 Switching Protocols
。
Greetings 问候
当您拥有HTTPS时,还应该通过https方案
proxy_pass https://socket_nodes;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.