我必须承认我对 WebServers 完全陌生,现在试图弄清楚如何配置我的 nginx(用于家庭用途)。我已经在 nginx 上运行了具有默认结构的 Web 服务 rutorrent。现在我想将目录结构更改为:
/usr/share/nginx/html/ (should contain the default-config)
/usr/share/nginx/rtorr_dir/ (should contain the rutorrent-content)
我的目标是:在我的浏览器上输入192.168.0.2/rutorrent
,然后会自动访问rtorr_dir
。我尝试了以下操作:
server {
listen *:80;
access_log /var/log/nginx/access.log info;
error_log /var/log/nginx/error.log debug;
auth_basic "ruser";
auth_basic_user_file /etc/users.htpasswd;
location /rutorrent {
rewrite /rutorrent/(.*) /$1 break;
root /usr/share/nginx/rtorr_dir;
index index.php index.html;
}
location /RPC1 {
include /etc/nginx/scgi_params;
scgi_pass backend2;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass backend;
....
我也尝试了location /
其他的变化,但显然不是正确的:(。所以我的问题是
- 如何正确设置重写?
- 当根目录已经包含了 URL 的某些部分时,会发生什么变化?(例如 rtorr_dir)
- 我是否也需要对其他位置进行一些更改,或者这是否会自动对底层文件(即 php)进行更改?
答案1
您可以alias
在用例中使用指令。参考:http://nginx.org/en/docs/http/ngx_http_core_module.html#alias
所以,
location /rutorrent {
alias /usr/share/nginx/rtorr_dir;
}
应该可以工作。您可能仍需要index
和指令。
我是否也需要对其他位置进行一些更改,或者这是否会自动对底层文件(即 php)进行更改?
由于您使用多个位置,我建议location ~* \.php$ {
在每个位置使用。例如...
location /rutorrent {
alias /usr/share/nginx/rtorr_dir;
try_files $uri $uri/ /index.php;
location ~* \.php$ {
# directives to process PHP
}
}
location /another_random_location {
alias /usr/share/nginx/another_random_directory;
try_files $uri $uri/ /index.php;
location ~* \.php$ {
# directives to process PHP
}
}
如果你保留 PHP 位置块旁边root
其他位置块,那么该 PHP 块将仅从块的指令集中获取其路径server
。最安全的方法是将 PHP 位置块包含在需要处理 PHP 的每个位置上。
我希望这能有所帮助。