Laravel代客共享URL导致连接被拒绝
Laravel Valet Share URL Leads to connection refused
一直在尝试使用临时 url https://xxxxx.ngrok.io 运行 Laravel 代客共享本地站点。当我运行 Valet version 1.1.22:
valet --version
Laravel Valet version 1.1.22
安全地 ngrok url 导致连接被拒绝。当它不安全时,它也会导致连接被拒绝(404 仅在辅助机器上使用 valet 运行ning,因为在那里找不到)。要么是那个问题,要么是我稍后提到的 DNS 解析问题。
在我的本地 wifi 网络和 PC 上工作正常。访问日志显示:
127.0.0.1 - [03/Oct/2016:08:57:06 +0300] "POST /server.php?doing_wp_cron=1475474226.5450510978698730468750 HTTP/1.1" 200 0
127.0.0.1 - [03/Oct/2016:08:57:07 +0300] "POST /server.php HTTP/1.1" 200 47
127.0.0.1 - [03/Oct/2016:08:59:09 +0300] "POST /server.php?doing_wp_cron=1475474348.8563120365142822265625 HTTP/1.1" 200 0
127.0.0.1 - [03/Oct/2016:08:59:10 +0300] "POST /server.php HTTP/1.1" 200 47
仍然没有在 ~/.valet/Log/access.log 的日志中看到与拒绝连接相关的错误。错误日志显示旧错误,与此问题无关。终端中的 Ngrook window 在我刚刚尝试的两个负载上显示 301 永久移动。 Ngrok 状态站点 http://localhost:4040/status 向我显示:
GET / HTTP/1.1
Host: site.dev
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/9.1.3 Safari/601.7.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-us
X-Forwarded-For: xx.xx.xx.xxx
X-Forwarded-Proto: https
X-Original-Host: xxxxxx.ngrok.io
然后重定向:
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Location: http://mysite.dev/
Server: Caddy
Status: 301 Moved Permanently
X-Powered-By: PHP/7.0.11
X-Ua-Compatible: IE=edge
Date: Mon, 03 Oct 2016 06:14:10 GMT
Content-Length: 0
Caddyfile 在这里完成(由 Valet 生成):
import /Users/jasper/.valet/Caddy/*
:80 {
fastcgi / 127.0.0.1:9000 php {
index server.php
}
rewrite {
to /server.php?{query}
}
log /Users/jasper/.valet/Log/access.log {
rotate {
size 10
age 3
keep 1
}
}
errors {
log /Users/jasper/.valet/Log/error.log {
size 10
age 3
keep 1
}
}
}
Ngrok 也是 运行ning(在 tld 域更改为 .localhost 后添加):
ps aux | grep ngrok
jasper 1260 0.0 0.2 556735952 28692 s001 S+ 10:23AM 1:27.14 /Users/jasper/.composer/vendor/laravel/valet/bin/ngrok http -host-header=rewrite site.localhost:80
root 1254 0.0 0.1 2463108 8964 s001 S+ 10:23AM 0:00.01 sudo -u jasper /Users/jasper/.composer/vendor/laravel/valet/bin/ngrok http -host-header=rewrite site.localhost:80
jasper 3557 0.0 0.0 2432804 2096 s000 S+ 2:36PM 0:00.00 grep ngrok
因此它确实命中了 Caddy 服务器并且 ngrok 状态确实显示了这一点。但它随后会进行重定向,这会转化为浏览器的连接被拒绝或 DNS 解析问题。那么这里的问题是什么?
最后我意识到 WordPress 使用其永久链接结构创建了一个额外的重定向。因此,当您关闭永久链接时,您可以使用 Ngrok 将您的 Laravel 代客 WordPress 网站分享给外界。不是完美的解决方案,但至少是一个可行的解决方案,它允许您在本地计算机上向客户展示正在进行的工作 运行。
一直在尝试使用临时 url https://xxxxx.ngrok.io 运行 Laravel 代客共享本地站点。当我运行 Valet version 1.1.22:
valet --version
Laravel Valet version 1.1.22
安全地 ngrok url 导致连接被拒绝。当它不安全时,它也会导致连接被拒绝(404 仅在辅助机器上使用 valet 运行ning,因为在那里找不到)。要么是那个问题,要么是我稍后提到的 DNS 解析问题。
在我的本地 wifi 网络和 PC 上工作正常。访问日志显示:
127.0.0.1 - [03/Oct/2016:08:57:06 +0300] "POST /server.php?doing_wp_cron=1475474226.5450510978698730468750 HTTP/1.1" 200 0
127.0.0.1 - [03/Oct/2016:08:57:07 +0300] "POST /server.php HTTP/1.1" 200 47
127.0.0.1 - [03/Oct/2016:08:59:09 +0300] "POST /server.php?doing_wp_cron=1475474348.8563120365142822265625 HTTP/1.1" 200 0
127.0.0.1 - [03/Oct/2016:08:59:10 +0300] "POST /server.php HTTP/1.1" 200 47
仍然没有在 ~/.valet/Log/access.log 的日志中看到与拒绝连接相关的错误。错误日志显示旧错误,与此问题无关。终端中的 Ngrook window 在我刚刚尝试的两个负载上显示 301 永久移动。 Ngrok 状态站点 http://localhost:4040/status 向我显示:
GET / HTTP/1.1
Host: site.dev
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/9.1.3 Safari/601.7.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-us
X-Forwarded-For: xx.xx.xx.xxx
X-Forwarded-Proto: https
X-Original-Host: xxxxxx.ngrok.io
然后重定向:
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Location: http://mysite.dev/
Server: Caddy
Status: 301 Moved Permanently
X-Powered-By: PHP/7.0.11
X-Ua-Compatible: IE=edge
Date: Mon, 03 Oct 2016 06:14:10 GMT
Content-Length: 0
Caddyfile 在这里完成(由 Valet 生成):
import /Users/jasper/.valet/Caddy/*
:80 {
fastcgi / 127.0.0.1:9000 php {
index server.php
}
rewrite {
to /server.php?{query}
}
log /Users/jasper/.valet/Log/access.log {
rotate {
size 10
age 3
keep 1
}
}
errors {
log /Users/jasper/.valet/Log/error.log {
size 10
age 3
keep 1
}
}
}
Ngrok 也是 运行ning(在 tld 域更改为 .localhost 后添加):
ps aux | grep ngrok
jasper 1260 0.0 0.2 556735952 28692 s001 S+ 10:23AM 1:27.14 /Users/jasper/.composer/vendor/laravel/valet/bin/ngrok http -host-header=rewrite site.localhost:80
root 1254 0.0 0.1 2463108 8964 s001 S+ 10:23AM 0:00.01 sudo -u jasper /Users/jasper/.composer/vendor/laravel/valet/bin/ngrok http -host-header=rewrite site.localhost:80
jasper 3557 0.0 0.0 2432804 2096 s000 S+ 2:36PM 0:00.00 grep ngrok
因此它确实命中了 Caddy 服务器并且 ngrok 状态确实显示了这一点。但它随后会进行重定向,这会转化为浏览器的连接被拒绝或 DNS 解析问题。那么这里的问题是什么?
最后我意识到 WordPress 使用其永久链接结构创建了一个额外的重定向。因此,当您关闭永久链接时,您可以使用 Ngrok 将您的 Laravel 代客 WordPress 网站分享给外界。不是完美的解决方案,但至少是一个可行的解决方案,它允许您在本地计算机上向客户展示正在进行的工作 运行。