小编Ste*_*ano的帖子

如何编写具有命名位置的 DRY、模块化 nginx conf(反向代理)

我主要使用 nginx 作为几个 gunicon/mod_wsgi 应用程序前面的反向缓存代理,当然还有服务器静态文件。

我发现很快我的 nginx 配置就变得无法维护;问题是我有一些相似(甚至相同)的模式,但我无法使它干净。

我遇到的最大问题之一是我喜欢使用命名位置作为对一组 conf 进行分组的一种方式,例如。

location @django_modwsgi {
    include proxy.conf;
    proxy_pass  http://127.0.0.1:8080;        
}

location @django_gunicorn {
    include proxy.conf; # this could also be included directly in the server {} block?
    proxy_pass  http://gunicorn_builder;
}
Run Code Online (Sandbox Code Playgroud)

注意。 问题在于同时拥有 gunicorn 和 wsgi。那只是一个例子。另一种是:

location @namedlocation_1 {
     some cache settings;
     some cache_key settings;
     ignore some headers;
     expires;
     proxy_pass
}

location @namedlocation_2 {
     other cache settings;
     other cache_key settings;
     ignore some headers;
     expires;
     proxy_pass
}
Run Code Online (Sandbox Code Playgroud)

但是要调用命名位置,我发现的唯一方法是:

location …
Run Code Online (Sandbox Code Playgroud)

configuration nginx

26
推荐指数
1
解决办法
8457
查看次数

使 linux ubuntu 服务器保持最新状态的最佳实践是什么(构建包、dist-upgrade、alt 存储库...)

我们正在运行基于Ubuntu 9.10 Karmic Koala的生产服务器,内核几乎是最新的 (2.6.38.2-grsec-xxxx-grs-ipv6-64) 但karmic 包存储库现在已经过时了,例如。Nginx 是 0.7.62 - 真的有问题 - 而最新的稳定版是 1.0.x!

此外,业力刚刚走到了生命的尽头。

这个问题:保持 UNIX 包最新的最佳实践?看起来很相似,但实际上只包含一些关于包管理器的建议;根本不是我需要的!

所以我看到的选项是:

  1. 获得一台新机器,从头开始安装,迁移
  2. 分销升级
  3. 使用不同的存储库(launchpad/ppa / backport / pinning
  4. 建立你自己的

#1 的缺点非常明显。

我不敢做一个 dist-upgrade 路径,因为停机时间和可能的灾难性后果对于生产服务器是不可能预测的,目前主要是重新构建我自己需要的包。但我确定我可能会遗漏一些。

我不太清楚使用 Ubuntu 向后移植的风险(稳定性/兼容性)是什么,此外,9.10 不再正式提供任何内容。Launchpad 是单独构建的,类似的问题 - 这比编译我自己的好多少?

构建包似乎很好,但是:

  1. 有时我无法重现正确的 ./configure 选项以重新使用我现有的配置文件
  2. 我确信有大量的包和依赖项现在已经过时并且可能是错误的来源

最后……最近发行版中的“旧”包怎么样?我想除了自己重新构建它们之外没有其他方法吗?2 和 4 的组合最终是最佳路径吗?

关于什么是最好的方法,或者为什么我的一些选择是好的/不好的原因,是否有任何客观的共识?

如果真的没有,我会接受在创建无限线程之前问题已关闭!

linux ubuntu update ubuntu-9.10 stability

8
推荐指数
1
解决办法
5145
查看次数

优化多个 gunicorn 实例的 worker 数量

我正在配置 gunicorn(由 supervisord 监控并在 nginx 前端后面)并且对要设置的最佳进程数感到有些困惑。

文档中清楚地解释了:

workers = multiprocessing.cpu_count() * 2 + 1
Run Code Online (Sandbox Code Playgroud)

我的机器是四核,所以应该算 9 个工人。

但我想运行多个应用程序,每个应用程序监听不同的端口。

那么计数是否应该被(截断):

workers_per_application = int(workers / NUM_APPLICATIONS)
Run Code Online (Sandbox Code Playgroud)

或者每个人都应该有上述数量的工人?

我认为这个问题实际上不仅适用于 gunicorn,而且适用于所有类似的侦听服务器......

configuration supervisord gunicorn

6
推荐指数
1
解决办法
5600
查看次数