-1

我正在尝试做一件非常简单的事情:Nginx 找到 *.php => 重定向到 Apache Nginx 找到 *.jpg => 尝试静态,如果不存在 => 重定向到 Apache

但是如果不重复代码我找不到解决方案:

    location ~* \.(css|js|png|jpeg|gif)$ {
            access_log off;
            expires 30d;
            try_files $uri @proxy;
    }

    location / {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8080;
    }

    location @proxy {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8080;
    }

我想说在位置/使用@proxy 位置,但找不到如何做到这一点。任何想法?

谢谢。

科尔科

4

1 回答 1

1

我还采用的一种减少重复代码的解决方案是将所有代理设置放在服务器块中(或在辅助文件中,如本例中的http://wiki.nginx.org/FullExample)并仅保留proxy_pass在位置. 要将 IP 也放在一个地方,您可以使用上游(它是默认模块): http ://wiki.nginx.org/HttpUpstreamModule

proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

upstream _backend {
    server 127.0.0.1:8080;
}

location ~* \.(css|js|png|jpeg|gif)$ {
    access_log off;
    expires 30d;
    try_files $uri @proxy;
}

location / {
    proxy_pass http://backend;
}

location @proxy {
    proxy_pass http://backend;
}
于 2012-12-02T23:35:53.447 回答