Redirect 将所有JPEG URL重定向到单个JPEG ing NGINX

Redirect 将所有JPEG URL重定向到单个JPEG ing NGINX,redirect,nginx,Redirect,Nginx,我正试图实现两个场景 场景A:如果客户端请求包含.jpeg或.jpg文件的URL,请将用户重定向到服务器上的单个.jpg文件(本例中为myimage.jpg) 场景B:如果客户端请求包含/abc/目录的URL,则通过代理将用户重定向到其他域,同时保持该URL不变 下面是我的nginx.conf的内容 http { server { listen 80; root /usr/share/nginx/html; #Scenario A

我正试图实现两个场景

场景A:如果客户端请求包含.jpeg或.jpg文件的URL,请将用户重定向到服务器上的单个.jpg文件(本例中为myimage.jpg)

场景B:如果客户端请求包含/abc/目录的URL,则通过代理将用户重定向到其他域,同时保持该URL不变

下面是我的nginx.conf的内容

http {

    server {
        listen 80;
        root /usr/share/nginx/html;

        #Scenario A
        location ~* \.(jpg|jpeg){
           rewrite ^$ /myimage.jpg break;
        }

        #Scenario B
        location ^~ /abc/ {
            proxy_pass http://cd.mycontent.com.my;
            proxy_redirect localhost http://cd.mycontent.com.my;
            proxy_set_header Host $host;
            }
    }
......
我提到的配置中的大部分内容在/var/log/nginx/error.log中不包含错误,但它的性能并不像预期的那样


场景A的更新:

我已经添加了root指令,但它仍然没有重写URL。我在Apache中实现了这一点,但在Nginx中没有。在Apache中,我仅创建内容如下的htaccess文件:

Options +FollowSymLinks

<IfModule mod_rewrite.c>
RewriteEngine On

#Check URL if contain .jpeg or .jpg
RewriteCond %{REQUEST_URI}  (\.jpeg|\.jpg)$
RewriteRule (.*)  myimage.jpg [QSA]

</IfModule>
Options+FollowSymLinks
重新启动发动机
#检查URL是否包含.jpeg或.jpg
RewriteCond%{REQUEST\u URI}(\.jpeg\.jpg)$
重写规则(.*)myimage.jpg[QSA]

有了这个htaccess,我可以用.jpeg |.jpg重写任何URL请求,用户将看到myimage.jpg的图像,而不是他们用URL请求的任何jpeg | jpg图像。我尝试过使用htaccess访问nginx转换器,但它不起作用。

您的配置有几个问题。您似乎没有定义
root
指令,重写将循环。另外,不确定是否使用带有
last
修饰符的绝对重定向

root /path/to/document/root;

location ~* \.(jpg|jpeg) {
    rewrite ^ /myimage.jpg break;
}
请注意,正则表达式将使用嵌入的
.jpg
字符串匹配URI。如果您只想匹配以
.jpg
结尾的URI,请附加一个
$

中断
将通过处理同一位置块中的URI来防止重定向循环

有关详细信息,请参阅