Nginx重写为特定的目录

我不得不承认我对WebServers是全新的,现在试图弄清楚如何configuration我的nginx(用于家庭用途)。 我已经使用默认的结构在我的nginx上运行了web服务rutorrent。 现在我想改变目录结构为:

/usr/share/nginx/html/ (should contain the default-config) /usr/share/nginx/rtorr_dir/ (should contain the rutorrent-content) 

我的目标是:在我的浏览器中,我想input192.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)?

你可以在你的用例中使用alias指令。 参考: http : //nginx.org/en/docs/http/ngx_http_core_module.html#alias

所以,

 location /rutorrent { alias /usr/share/nginx/rtorr_dir; } 

应该pipe用。 您可能仍然需要index和指令。

我是否需要更改其他位置以及某些东西,还是自动为基础文件(即PHP)?

因为,你使用多个位置,我build议使用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位置块其他位置块一起保存,那么该PHP块将仅从为server块设置的root指令获取path。 最安全的方法是在每个需要处理PHP的位置包含PHP位置块。

我希望有帮助。