繁体   English   中英

将Apache Mod Rewrite规则转换为NGINX

[英]Converting Apache Mod Rewrite rules to NGINX

我目前正在托管ShoutCast Manager的副本,以便人们可以使用Web界面流式传输音频并配置其流。

我使用Apache 2.4 Web服务器作为HTTP服务器,它似乎在处理大型上传文件时遇到问题。 我编辑了我的Apache配置,允许上传更大的文件,并增加了超时限制。 PHP也被赋予了超时限制,以及512MiB的内存限制增加。

上传大小超过200MiB的音频文件时,服务器响应“服务不可用”并且文件上载未完成。

因此,我希望转向NGINX作为我的Web服务器解决方案,我遇到了将重写规则转换为与NGINX一起使用的问题。 我目前使用Apache的规则如下:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

# Rewrites
RewriteRule ^view/([0-9]+)/([0-9]+)/([^/]*)$ ./viewserver.php?portbase=$1&id=$2&srvname=$3 [L,QSA]
RewriteRule ^view/([0-9]+)/([0-9]+)/([^/]*)/$ ./viewserver.php?portbase=$1&id=$2&srvname=$3 [L,QSA]
RewriteRule ^start/([0-9]+)/([0-9]+)/([^/]*)$ ./control.php?control=$1&id=$2&action=start&srvname=$3 [L,QSA]
RewriteRule ^start/([0-9]+)/([0-9]+)/([^/]*)/$ ./control.php?control=$1&id=$2&action=start&srvname=$3 [L,QSA]
RewriteRule ^stop/([0-9]+)/([0-9]+)/([^/]*)$ ./control.php?control=$1&id=$2&action=stop&srvname=$3 [L,QSA]
RewriteRule ^stop/([0-9]+)/([0-9]+)/([^/]*)/$ ./control.php?control=$1&id=$2&action=stop&srvname=$3 [L,QSA]
RewriteRule ^restart/([0-9]+)/([0-9]+)/([^/]*)$ ./control.php?control=$1&id=$2&action=restart&srvname=$3 [L,QSA]
RewriteRule ^restart/([0-9]+)/([0-9]+)/([^/]*)/$ ./control.php?control=$1&id=$2&action=restart&srvname=$3 [L,QSA]
RewriteRule ^edit/([0-9]+)/([0-9]+)/([^/]*)$ ./edit.php?portbase=$1&id=$2&status=$3 [L,QSA]
RewriteRule ^edit/([0-9]+)/([0-9]+)/([^/]*)/$ ./edit.php?portbase=$1&id=$2&status=$3 [L,QSA]
RewriteRule ^delete/([0-9]+)/([0-9]+)/([^/]*)$ ./delete.php?id=$1&port=$2&srvname=$3 [L,QSA]
RewriteRule ^delete/([0-9]+)/([0-9]+)/([^/]*)/$ ./delete.php?id=$1&port=$2&srvname=$3 [L,QSA]
RewriteRule ^widgets/([^/]*)/([^/]*)\.js$ ./include/widgets.js.php?port=$1&type=$2 [L,QSA]
RewriteRule ^public/api/autodj/([^/]*)/([^/]*)/([^/]*)$ ./api/api.controller/index.php?api-key=$1&port=$2&action=autodj&autodj=$3 [L,QSA]
RewriteRule ^public/api/autodj/([^/]*)/([^/]*)/([^/]*)/$ ./api/api.controller/index.php?api-key=$1&port=$2&action=autodj&autodj=$3 [L,QSA]
RewriteRule ^public/api/server/([^/]*)/([^/]*)/([^/]*)$ ./api/api.controller/index.php?api-key=$1&port=$2&action=$3 [L,QSA]
RewriteRule ^public/api/server/([^/]*)/([^/]*)/([^/]*)/$ ./api/api.controller/index.php?api-key=$1&port=$2&action=$3 [L,QSA]
RewriteRule ^public/api/schedule/([^/]*)/([^/]*)/([^/]*)$ ./api/api.controller/index.php?api-key=$1&port=$2&action=schedule&schedule=$3 [L,QSA]
RewriteRule ^public/api/schedule/([^/]*)/([^/]*)/([^/]*)/$ ./api/api.controller/index.php?api-key=$1&port=$2&action=schedule&schedule=$3 [L,QSA]
RewriteRule ^download-playlist/([0-9]+).([^/]*)$ ./include/widgets/playlists/playlists.php?port=$1&type=$2 [L,QSA]
RewriteRule ^events/([^/]*)/$ ./eventlog.php?log=$1 [L,QSA]
RewriteRule ^events/([^/]*)/([^/]*)/$ ./eventlog.php?log=$1&page=$2 [L,QSA]

# Errors
RewriteRule ^errors/404/$ ./404.php [L,QSA]
ErrorDocument 404 /errors/404/

RewriteRule ^errors/403/$ ./404.php [L,QSA]
ErrorDocument 403 /errors/403/

RewriteRule ^errors/500/$ ./500.php [L,QSA]
ErrorDocument 500 /errors/500/

可以在此处找到ShoutCast Manager的副本: https//github.com/gaza1994/SHOUTcast-Manager

任何有关制作NGINX兼容重写规则的帮助都将非常受欢迎!

这是未经测试的,但这应该可以解决问题

error_page 500 /errors/500/;    
error_page 404 /errors/404/;    
error_page 403 /errors/403/;

rewrite ^/view/([0-9]+)/([0-9]+)/([^/]*)$ /viewserver.php?portbase=$1&id=$2&srvname=$3 last;
rewrite ^/view/([0-9]+)/([0-9]+)/([^/]*)/$ /viewserver.php?portbase=$1&id=$2&srvname=$3 last;
rewrite ^/start/([0-9]+)/([0-9]+)/([^/]*)$ /control.php?control=$1&id=$2&action=start&srvname=$3 last;
rewrite ^/start/([0-9]+)/([0-9]+)/([^/]*)/$ /control.php?control=$1&id=$2&action=start&srvname=$3 last; 
rewrite ^/stop/([0-9]+)/([0-9]+)/([^/]*)$ /control.php?control=$1&id=$2&action=stop&srvname=$3 last;
rewrite ^/stop/([0-9]+)/([0-9]+)/([^/]*)/$ /control.php?control=$1&id=$2&action=stop&srvname=$3 last;
rewrite ^/restart/([0-9]+)/([0-9]+)/([^/]*)$ /control.php?control=$1&id=$2&action=restart&srvname=$3 last;
rewrite ^/restart/([0-9]+)/([0-9]+)/([^/]*)/$ /control.php?control=$1&id=$2&action=restart&srvname=$3 last;
rewrite ^/edit/([0-9]+)/([0-9]+)/([^/]*)$ /edit.php?portbase=$1&id=$2&status=$3 last;
rewrite ^/edit/([0-9]+)/([0-9]+)/([^/]*)/$ /edit.php?portbase=$1&id=$2&status=$3 last;
rewrite ^/delete/([0-9]+)/([0-9]+)/([^/]*)$ /delete.php?id=$1&port=$2&srvname=$3 last;
rewrite ^/delete/([0-9]+)/([0-9]+)/([^/]*)/$ /delete.php?id=$1&port=$2&srvname=$3 last;
rewrite ^/widgets/([^/]*)/([^/]*)\.js$ /include/widgets.js.php?port=$1&type=$2 last;
rewrite ^/public/api/autodj/([^/]*)/([^/]*)/([^/]*)$ /api/api.controller/index.php?api-key=$1&port=$2&action=autodj&autodj=$3 last;
rewrite ^/public/api/autodj/([^/]*)/([^/]*)/([^/]*)/$ /api/api.controller/index.php?api-key=$1&port=$2&action=autodj&autodj=$3 last;
rewrite ^/public/api/server/([^/]*)/([^/]*)/([^/]*)$ /api/api.controller/index.php?api-key=$1&port=$2&action=$3 last;
rewrite ^/public/api/server/([^/]*)/([^/]*)/([^/]*)/$ /api/api.controller/index.php?api-key=$1&port=$2&action=$3 last;
rewrite ^/public/api/schedule/([^/]*)/([^/]*)/([^/]*)$ /api/api.controller/index.php?api-key=$1&port=$2&action=schedule&schedule=$3 last;
rewrite ^/public/api/schedule/([^/]*)/([^/]*)/([^/]*)/$ /api/api.controller/index.php?api-key=$1&port=$2&action=schedule&schedule=$3 last;
rewrite ^/download-playlist/([0-9]+).([^/]*)$ /include/widgets/playlists/playlists.php?port=$1&type=$2 last;
rewrite ^/events/([^/]*)/$ /eventlog.php?log=$1 last;
rewrite ^/events/([^/]*)/([^/]*)/$ /eventlog.php?log=$1&page=$2 last;

SHOUTcast经理也应该在NGINX下正常运行!

试试这个工具。 该工具将Apache的.htaccess转换为nginx配置指令。 https://winginx.com/en/htaccess

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM