python - nginx/bottle python - 将请求路由到另一个端口

标签 python redirect nginx port bottle

我四处寻找答案,我相信答案很简单,但我找不到。我想是因为我对 nginx 的了解不足......

我的 nginx 实例在 localhost:8080 上运行,我的 Bottle 服务器在 localhost:8081 上监听。如果我从浏览器打开地址,它们工作正常,但是当我尝试从我在 localhost:8080 上运行的应用程序访问时,我无法检索 Bottle 服务器生成的资源。

我需要做的是将对/data/路径的所有调用重定向到同一域 (localhost) 但另一个端口 (8081),我的 Bottle 服务器正在监听的端口。

代码如下: Nginx:

server {
    listen       8080;
    server_name  localhost;
    root /Users/Diego/Desktop;

    location / {
        index  index.html index.htm;
    }

    location /data/ {
        proxy_pass http://127.0.0.1:8081;
    }
}

Bottle 服务器:

@route('/')
def printtest():
    print 'success'
    return 'loaded page'

@route('/<scenename>/data/<filename:path>')
def testMethod(scenename,filename):
    print scenename, filename

run(host='localhost', port=8081, debug=True)

在浏览器中调用 localhost:8080,向我显示通过 nginx 提供的页面,但是,如果我调用一个链接来检索存储在/data/directory/filename.json 中的内容,Bottle 似乎没有收到要求。错误日志指出:

2013/04/16 18:50:52 [error] 3544#10612: *69 CreateFile() "C:/Users/Diego/Desktop/project1/data/directory/directory-varietal.json" failed (3: The system cannot find the path specified), client: 127.0.0.1, server: localhost, request: "GET /project1/data/directory/directory-varietal.json HTTP/1.1", host: "localhost:8081", referrer: "http://localhost:8080/project1/"

谁能告诉我如何处理这种重定向/路由?

另外,有没有办法在 nginx 的日志中打印提要?像命令 print_entry 或类似命令?

谢谢!

编辑:我试过了但没有结果... https://serverfault.com/questions/208656/routing-to-various-node-js-servers-on-same-machine

编辑:好的一些改进,我发现这可能是查询位置的问题。使用此 block 并请求 .json 文件,它实际上会查询 Bottle 服务器。

location ~* \.(json)$ {
    proxy_pass http://localhost:8081;
}

编辑:是的!找到解决方法了。。。原来是location定义的路径有问题。 self 注意:仔细阅读手册:http://wiki.nginx.org/HttpCoreModule#location

服务器的新代码:

server {
    listen       8080;
    server_name  localhost;
    root /Users/Diego/Desktop;

    location / {
        index  index.html index.htm;
    }

    location ~* /data/ {
        proxy_pass http://localhost:8081;
    }
}

无论如何,如果有人有更好的解决方案或任何建议,欢迎贡献。

最佳答案

编辑:是的!找到解决方法了。。。原来是location定义的路径有问题。 self 注意:仔细阅读手册:http://wiki.nginx.org/HttpCoreModule#location

服务器的新代码:

server {
  listen       8080;
  server_name  localhost;
  root /Users/Diego/Desktop;

  location / {
    index  index.html index.htm;
  }

  location ~* /data/ {
    proxy_pass http://localhost:8081;
  }
}

无论如何,如果有人有更好的解决方案或任何建议,欢迎贡献。

关于python - nginx/bottle python - 将请求路由到另一个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050501/

相关文章:

amazon-web-services - 如何避免使用Nginx配置进行AWS ELB健康检查的基本身份验证

python - 如何通过两点(直径端)画圆?

python - 使用来自另一个 DataFrame 的文本选择 Pandas DataFrame

php - http_redirect() 与 header()

nginx - 拒绝所有不阻止返回重定向

php - 设置 ini max_execution_time 不起作用

python - str.__getslice__ 没有按预期工作,负停止

python - Pandas groupby 和 qcut

c# - asp.net 重定向页面上的倒计时标签

firebase - 从 url 中删除 www 时,您的连接不是私有(private) firebase 托管