我正在设置 nginx + uwsgi。我计划在不同的子域(例如 sub1.example.com、sub2.example.com)上运行多个具有不同设置的应用程序。
uwsgi 的优点之一是配置重写。例如,我可以为所有 uwsgi 应用程序创建一个框架,并使用 %n 来表示当前文件名(不带扩展名)。
$ cat > uwsgi.skel
[uwsgi]
...
socket = /var/run/uwsgi/%n.sock
...
现在我可以使用 ln -s 创建新的 uwsgi 实例。
$ ln -s /etc/uwsgi/conf/sub1.example.com.ini /etc/uwsgi/conf/uwsgi.skel
$ ln -s /etc/uwsgi/conf/sub2.example.com.ini /etc/uwsgi/conf/uwsgi.skel
服务器的 nginx 配置完全相同除了域名。我想做这样的事情:
cat > /etc/nginx/sites-available/app.skel
server {
listen 80;
server_name $file_name;
location / { try_files $uri @app }
location @app {
include uwsgi_params;
uwsgi_pass unix://var/run/uwsgi/$file_name.sock
}
}
$ ln -s /etc/nginx/sites-enabled/sub1.example.com /etc/nginx/sites-available/app.skel
$ ln -s /etc/nginx/sites-enabled/sub2.example.com /etc/nginx/sites-available/app.skel
是否有任何方法可以在 nginx 中进行类似于 uwsgi 的替换?在 nginx 应用程序之间实现配置共享的最佳方法是什么?
答案1
事实证明,对于 nginx 来说这是不可能的。