0
我有我的虚拟服务器之一以下nginx的配置:如何修复这个nginx配置与几乎重复的代理位置?
upstream app_example_https {
server 127.0.0.1:1340;
}
proxy_cache_path /Users/jaanus/dev/nginxcache levels=1:2 keys_zone=S3CACHE:10m;
proxy_cache_key "$scheme$request_method$host$request_uri";
server {
listen 0.0.0.0:1338;
server_name localhost;
ssl on;
ssl_certificate /Users/jaanus/dev/devHttpsCert.pem;
ssl_certificate_key /Users/jaanus/dev/devHttpsKey.pem;
location =/{
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host 'something.s3-website-us-east-1.amazonaws.com';
proxy_set_header Authorization '';
proxy_hide_header x-amz-id-2;
proxy_hide_header x-amz-request-id;
proxy_hide_header Set-Cookie;
proxy_ignore_headers Set-Cookie;
proxy_cache S3CACHE;
proxy_cache_valid any 60m;
add_header X-Cached $upstream_cache_status;
proxy_pass http://something.s3-website-us-east-1.amazonaws.com/;
}
location /static/ {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host 'something.s3-website-us-east-1.amazonaws.com';
proxy_set_header Authorization '';
proxy_hide_header x-amz-id-2;
proxy_hide_header x-amz-request-id;
proxy_hide_header Set-Cookie;
proxy_ignore_headers Set-Cookie;
proxy_cache S3CACHE;
proxy_cache_valid any 60m;
add_header X-Cached $upstream_cache_status;
proxy_pass http://something.s3-website-us-east-1.amazonaws.com/static/;
}
location/{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://app_example_https/;
proxy_redirect off;
}
}
这里做英文:
有供应请求无论是从静态的亚马逊S3站点或应用程序的nginx的前端服务器。
对/(站点根)和/ static的所有请求都是从Amazon S3反向代理的。所有其他请求都是从应用程序服务器反向代理的。
现在,问题:S3有两个几乎相同的位置块。这是我如何使配置工作的唯一方式,其中两个特定的文件夹(root和/静态)由S3提供,其他所有内容都转到应用程序服务器。
两个几乎相同的块看起来很笨,不可扩展。当我添加这样的文件夹时,我不想重复块。
如何将两个位置合并到一个位置块中,同时保持所有工作方式相同?
将重复的部分放入外部文件并包含它。 –
有趣。这将工作,并使其看起来更好,但它仍然需要几个位置块。我更喜欢一些让我只用两个位置块(一个用于S3,另一个用于应用服务器)的东西。 – Jaanus
这是个坏主意。几个简单的地点比例如地理位置更容易理解(并且更高效)。奇怪的正则表达式位置。 –