gpt4 book ai didi

azure - Yaws 服务器在 Azure 的本地主机上启动,但无法从 cloudapp.net 访问

转载 作者:行者123 更新时间:2023-12-03 03:13:29 25 4
gpt4 key购买 nike

我在 Windows Azure VM 上成功启动了 Yaws 服务器,但无法访问公共(public)域。

目前,我只想使用 Yaws 托管我的静态内容。

我搜索了一些文章,但没有找到解决方案。

这是详细信息,请给我一些想法,谢谢。

我在 localhost:8000 上启动了 Yaws 服务器

我已经通过以下配置启动了 Yaws 服务器:

# /etc/yaws/conf.d/localhost.conf

<server localhost>
port = 8000
listen = 127.0.0.1
docroot = /home/me/website
# dir_listings = true
</server>

我认为我成功启动了http服务器,因为我可以通过以下方式curl index.html的内容:

curl losthost:8000

我在 Windows Azure VM 中绑定(bind)端点

我还在 Window Azure VM (Ubuntu Server 15.04) 上设置了端点:

NAME | PROTOCOL | PUBLIC PORT | PRIVATE PORT
:----|:---------|:------------|:-------------
HTTP | TCP | 80 | 8000

但无法访问azeure_vm_name.cloudapp.net

但我无法通过 azure_vm_name.cloudapp.net 访问静态网站。

cloudapp.net 是 Windows Azure VM 的公共(public)域。

但是我可以访问公共(public)域启动 python 服务器

之前,我尝试在文件夹 /home/me/website 中启动 python http.server:

# python 3
python -m http.server
# python 2
python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

来自 Yaws 服务器的信息报告

$ sudo yaws -i
Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-
poll:true]

Eshell V6.2 (abort with ^G)
1>
=INFO REPORT==== 22-Oct-2015::07:30:46 ===
Yaws: Using config file /etc/yaws/yaws.conf

=INFO REPORT==== 22-Oct-2015::07:30:46 ===
Yaws: Using subconfig file /etc/yaws/conf.d/localhost.conf

=INFO REPORT==== 22-Oct-2015::07:30:48 ===
yaws debug:Add path "/usr/lib/yaws/custom/ebin"

=INFO REPORT==== 22-Oct-2015::07:30:48 ===
yaws debug:Add path "/usr/lib/yaws/examples/ebin"

=INFO REPORT==== 22-Oct-2015::07:30:48 ===
yaws debug:Running with id="default" (localinstall=false)
Running with debug checks turned on (slower server)
Logging to directory "/var/log/yaws"

=INFO REPORT==== 22-Oct-2015::07:30:48 ===
Ctlfile : /home/me/.yaws/yaws/default/CTL

=INFO REPORT==== 22-Oct-2015::07:30:48 ===
Yaws: Listening to 127.0.0.1:8000 for <1> virtual servers:
- http://localhost:8000 under /home/me/website

引用文献

Installing Yaws server on Ubuntu 12.04 (Using a cloud service)

https://askubuntu.com/q/190841/249957

最佳答案

经过一番研究和测试,终于找到了解决方案。

最终解决方案

这是最终的yaws.conf:

<server azure_VM_name.cloudapp.net>
port = 8000
listen = <Azure VM INTERNAL IP ADDRESS>
docroot = /home/scotv/repo/shanlin-web
# dir_listings = true
</server>

如何找到这个解决方案

感谢@steve-vinoski的建议,我打开了--debug开关,阅读了官方文档“Yaws - Yet Another Web Server(2015年10月7日版)”。

在第 9 页,Yaws PDF 文档提到:

The configuration in Example 2.1 defined one HTTP server on address 127.0.0.1:8000 called "localhost". It is important to understand the difference between the name and the address of a server. The name is the expected value in the client HTTP Host: header. That is typically the same as the fully-qualified DNS name of the server whereas the address is the actual IP address of the server.

所以我在浏览器中检查了 HTTP 请求 header :

GET / HTTP/1.1
Host: azure_VM_name.cloudapp.net
Connection: keep-alive

这就是为什么我将 yaws.conf 更改为:

# <server localhost> </server>
<server azure_VM_name.cloudapp.net> </server>

下一步是根据来自 SimpleHTTPServer 的消息找出我需要监听的 IP:

python -m SmpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

我决定听0.0.0.0

一切正常,我现在可以访问 azure_VM_name.cloudapp.net。

但是,yaws.conf的手册提到:

SERVER PART

listen = IpAddress

If the specified IP address is 0.0.0.0 Yaws will listen on all local IP addresses on the specified port.

我不想听所有的。

所以我检查了 Windows Azure VM 提供的 IP 地址,我们有:

DNS NAME
azrue_VM_name.cloudapp.net
HOST NAME
azrue_VM_name
PUBLIC VIRTUAL IP (VIP) ADDRESS
40.*.*.*
INTERNAL IP ADDRESS
100.*.*.*

我尝试了PUBLIC VIP和INTERNAL IP,最后我发现我应该监听INTERNAL IP:8000。

现在,我正在运行雅司病:

sudo yaws -D --heart --debug --conf ./deploy/yaws.conf

关于azure - Yaws 服务器在 Azure 的本地主机上启动,但无法从 cloudapp.net 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com