Ngrok 没有正确地隧道 Nginx
Posted
技术标签:
【中文标题】Ngrok 没有正确地隧道 Nginx【英文标题】:Ngrok not tunneling properly Nginx 【发布时间】:2020-05-09 03:19:04 【问题描述】:我的烧瓶应用程序通过我的 VM 部署在 nginx 上。
一切都部署好了,我可以在 http://my.ip.number 上请求我的 api(我有一个公共 IP)
但是当我运行 Ngrok (我需要 https 并且我没有域名来生成 SSL 证书)时,URL https//number.ngrok.io 显示给我Nginx 主页(欢迎使用 Nginx)而不是我的 webapp。
为什么会这样?
PD:当我运行“curl localhost”时,我得到了 Nginx 欢迎页面,但是当我执行“curl -4 localhost”时,我得到了我的 webapp 主页
etc/nginx/site-available/myproject
server
listen 80;
server_name 0.0.0.0;
location /
include proxy_params;
proxy_pass http://unix:/home/datascience/chatbot-cima/chatbot.sock;
server
listen 80;
server_name 127.0.0.1;
location /
proxy_pass http://unix:/home/datascience/chatbot-cima/chatbot.sock;
server
listen 80;
server_name localhost;
location /
proxy_pass http://unix:/home/datascience/chatbot-cima/chatbot.sock;
server
listen 80;
server_name public.ip;
location /
proxy_pass http://unix:/home/datascience/chatbot-cima/chatbot.sock;
【问题讨论】:
【参考方案1】:来自 ngrok 的任何请求都将 Host
标头设置为 ngrok URL。 nginx 的行为是尝试匹配上面配置中的server
块之一,如果没有server_name
匹配Host
标头,则默认为第一个。
但是,我猜在/etc/nginx/conf.d/default.conf
或/etc/nginx/sites-enabled/0-default
有另一个配置文件,其中有一个listen
指令和default_server
集。这将捕获这些请求并提供“欢迎使用 nginx!”。页面。
我建议您查找该文件并将其删除,这应该可以解决问题。
不过,您也可以简化上述配置,只需:
server
listen 80;
server_name localhost;
location /
include proxy_params;
proxy_pass http://unix:/home/datascience/chatbot-cima/chatbot.sock;
如果没有另一个 server
块隐藏在配置中的其他位置并带有类似 listen 80 default_server;
的指令,那么这应该会捕获所有请求。
欲了解更多信息,请参阅:How nginx processes a request
【讨论】:
以上是关于Ngrok 没有正确地隧道 Nginx的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rails 6 中将我的 Ngrok 隧道动态添加到 config.hosts?