如果我在 Debian wheezy 服务器上安装 nginx 作为代理,需要采取哪些步骤来更改我的 apache 配置,以便所有静态内容都由 nginx 直接传递?
我的服务器上已经运行了大约 250 个域,并考虑通过 nginx 重新路由所有内容来解决这个问题,apache2.2 无法使用比 1024 更强的 DH 密码来避免堵塞。
答案1
如果你想让 Nginx 背后的 Apache 作为代理和静态内容服务器,我看到两种解决方案:
1.您可以仅为静态内容创建新的子域,例如 static.yoursite.asd 。当然,它会要求你修改你的 DNS 记录(这里是如何做到这一点http://content.websitegear.com/article/subdomain_setup.htm)。在 Nginx 配置文件中,您需要有 2 个服务器块。一种用于提供静态内容,另一种用于将流量重定向到 Apache。以下是静态内容的服务器块的样子:
server {
listen 80;
server_name static.localhost;
location / {
root /path/to/static/content;
# 404 if file does not exist
try_files $uri $uri/ =404;
}
}
下面是将流量重定向到 Apache 的示例服务器块:(假设您的 Apache 在端口 8000 上工作)
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
proxy_pass http://localhost:8000;
}
}
2.您可以在 Nginx 上拥有一个服务器块,但使用两个不同的位置。它花费更少的精力,因为您不必修改 DNS 记录。假设您希望将静态文件放在 yoursite.asd/static/ 位置,并重定向到根位置 ( yoursite.asd/ ) 上的 Apache。
以下是提供静态内容的示例位置:
location /static/ {
root /path/to/content;
# we don't want to have static files only in folder "static" in
# root document, so let's rewrite it to our root document
rewrite ^/static/(.*)$ /$1 break;
}
以下是将流量重定向到端口 8000 上的 Apache 的示例位置:
location / {
proxy_pass http://localhost:8000;
}