访问azure VM上的Web服务

时间:2015-03-13 15:22:57

标签: azure curl ip endpoint

我在使用Ubuntu服务器14.04 LTS的Azure VM上运行运动衫/灰熊网络服务。我可以使用curl从机器内部访问Web服务,但是从机器外部请求只是超时。

也就是说,我可以做这个卷曲线:

curl -X POST http://example.cloudapp.net:80/resource/path --data "text=´Mario"

并从VM的shell中获取响应,但不是来自我的Windows控制台或同一Azure数据中心中的其他VM。

我在Main.java

中的端口9998上启动Grizzly Web服务器
public class Main {

    public static final URI BASE_URI = UriBuilder.fromUri("http://0.0.0.0/").port(9998).build();

    protected static SelectorThread startServer() throws IOException {
        final Map<String, String> initParams = new HashMap<String, String>();
        initParams.put("com.sun.jersey.config.property.packages", "mypackage");
        SelectorThread threadSelector = GrizzlyWebContainerFactory.create(BASE_URI, initParams);     
        return threadSelector;
    }

    public static void main(String[] args) throws IOException {
        SelectorThread threadSelector = startServer();
        System.in.read();
        threadSelector.stopEndpoint();
    }    
}

我可以看到它用netstat -a收听:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:9998                  *:*                     LISTEN

我已经设置了一个Azure端点,以便我可以访问VM上的Web服务,在内部端口9998和外部端口80之间进行转换。

Azure endpoint

端点上没有ACL规则,因此default是让所有内容通过的。

VM中的我的iptables设置为允许所有内容通过:

$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68

我的理论是问题出在虚拟机之外,但我不知道从哪里开始。有没有人知道如何解决这个问题或如何进行故障排除?如果您还有其他需要,请询问。有一点可能有帮助,如果我可以获取Azure端点的访问尝试日志,但我不知道如何获取它们。

0 个答案:

没有答案