使用nginx配置更改服务器名称返回给应用程序?

时间:2015-08-13 16:09:23

标签: nginx flask http-headers

简短版本:

是否可以将nginx更改服务器名称“myexample.com”更改为“example.com”并将其返回给使用它的应用程序?应用程序在nginx的服务器标签中使用uwsgi_pass。

长版:

我有一个运行Flask应用程序的nginx服务器。它使用uwsgi_pass和套接字来运行应用程序。 我的Flask应用程序有

app.config['SERVER_NAME'] = 'example.com'

解决子域(我在子域上工作的蓝图很少)。我还注册了另一个子域名,例如myexample.com,我想将其重定向到此服务器IP并执行完全相同的操作。 但我知道因为烧瓶使用“example.com”进行子域解析,它不会工作!

我无法在烧瓶中找到它,但我想知道是否可以将“myexample.com”的nginx更改服务器名称改为“example.com”然后将其传递给应用程序?我想这样吧应该工作正常。

由于

2 个答案:

答案 0 :(得分:0)

Nginx支持正则表达式是可能的。

不确定Flask,但是,例如,在PHP上:

server
{
    server_name           ~^(?<project>.+)\.dev$;
    set $root /var/www/$project;
    root $root;
    error_log             /var/log/nginx/error.log;
    location ~ \.php$ {
        fastcgi_param MAGE_RUN_CODE $project;
        fastcgi_read_timeout 3600;
        include       /etc/nginx/fastcgi_params;
        fastcgi_pass  development;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    }
}

PHP将有一个名为$MAGE_RUN_CODE的变量,其值为$project,与正则表达式匹配。

答案 1 :(得分:0)

你可以用这个

  proxy_set_header   HOST     "example.com" ;
  proxy_pass http://127.0.0.1/;
  proxy_buffering off;