Caching Objects, Passing Through and Rewrites

jwilson nginx-forum at nginx.us
Fri Feb 1 17:33:46 UTC 2013


I'm trying to set up nginx to reverse proxy for our CDN to prevent
unauthorized access to raw video feeds. The idea is to restrict it to a set
user-agent and referer, and if doesn't match, to instead call the page for
that video.
I would also like it to cache said video objects as well as any other
cachable objects, and to just pass other URLs through to origin.
Here's my config so far:
 upstream mainsite {
 server www.example.com;
 }
 upstream cdn {
 server example.cdnprovider.com;
 }
 server {
 listen *:80;
 # cachable objects, no restrictions
 location ~ (^/img|^/css|^/js|^/video/thumbnail|^/user/avatar) {
 proxy_pass http://cdn$request_uri;
 proxy_set_header Host "content.example.com";
 }
 # raw video requests
 location ~ ^/video/raw {
 rewrite_log on;
 valid_referers *.example.com example.com;
 # get the video id from the end of the string
 if ($uri ~* ^/video/raw/(.*)$) {
 set $vidid 1ドル;
 }
 # The app is automatically passed
 if ($http_user_agent ~* Example-App) {
 proxy_pass http://cdn$request_uri;
 }
 # redirect requests for raw video to page for that video
 if ($invalid_referer) {
 rewrite ^(.*)$ /!$vidid break; # example.com/!vidid
 }
 proxy_pass http://mainsite$request_uri;
 proxy_set_header Host "www.example.com";
 }
 # everything else goes to origin, no caching
 location / {
 proxy_pass http://mainsite$request_uri;
 proxy_set_header Host "www.example.com";
 }
 }
The issue is that even without providing the correct user-agent or referer,
I still get the raw video returned. Any help appreciated!
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,235825,235825#msg-235825


More information about the nginx mailing list

AltStyle によって変換されたページ (->オリジナル) /