2

您好,我正在运行 web2py nginx 和 uwsgi,但在部署 1 个或多个域时遇到了问题。问题是服务器总是返回默认的欢迎应用程序,而不是我为域指定的文件夹

任何想法都非常感谢。这是我的 nginx.conf 文件(相关部分)

server {
    listen       80;
    server_name  www.cheer10s.com cheer10s.com;

    location / {
        uwsgi_pass     127.0.0.1:9001;
        include        uwsgi_params;
    }

    location /static {
        root   /opt/web2py/applications/cheer10s/;
    }
}

server {
    listen       443;
    server_name  www.cheer10s.com cheer10s.com;
    ssl                  on;
    ssl_certificate      /opt/nginx/conf/server.crt;
    ssl_certificate_key  /opt/nginx/conf/server.key;

    location / {
        uwsgi_pass      127.0.0.1:9001;
        include         uwsgi_params;
        uwsgi_param     UWSGI_SCHEME $scheme;
    }

    location /static {
        root /opt/web2py/applications/cheer10s/;
    }
}

*干杯

4

1 回答 1

3

这个位置:

location /static {
        root   /opt/web2py/applications/cheer10s/;
    }

只是对静态文件的重写,而不是对应用程序的重写,我猜是错误的,必须是:

location ~* /(\w+)/static/ {
           root /opt/web2py/applications/;
        }

上面的行将只是 NGINX 直接在 /static 文件夹下的服务器文件,不会为它触及 web2py。

使用 uwsgi,此行负责调用 web2py

location / {
                uwsgi_pass      127.0.0.1:9001;
                include         uwsgi_params;
        }

并且路由器必须在框架中定义,而不是在 nginx 中。如果你想欢呼 10s 成为默认应用程序,请将routes.py放在你的 web2py 根文件夹中。看起来像这样:

routers = dict(

    # base router
    BASE = dict(
        default_application = 'cheer10s',
        domains = {
                'yourdomain.com' : 'cheer10s',
                'anotherdomain.com':'anotherapp'
                },
        applications = ['cheer10s','anotherapp','admin'],
        controllers = 'DEFAULT'
    ),
)

将上面的内容保存为 web2py 根文件夹中的 routes.py 并重新启动 web2py,但不要忘记修复您的 nginx conf。

于 2011-08-30T01:20:36.760 回答