我正在尝试让 Nginx 代理多个 Web 应用程序(其中包括 Tiny Tiny RSS 和 phpPgAdmin)到同一域下的不同子目录中。
例如,TT RSS 位于 /home/ttrss/www/ 下,由用户“ttrss”下运行的 PHP5 FPM 进程提供服务,其他 webapps 也遵循相同的模型。
以下是相关的 Nginx 配置:
# Tiny Tiny RSS
location /ttrss/ {
alias /home/ttrss/www/;
index index.php;
}
location ~ /ttrss/.*\.php$ {
if ($fastcgi_script_name ~ /ttrss(/.*\.php)$) {
set $valid_fastcgi_script_name $1;
}
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/ttrss/www/$valid_fastcgi_script_name;
}
我之前从未使用过 Nginx,我想知道我使用的方式是否是“正确的方式”,或者是否存在我不知道的不同、更简单或更好的方式。
答案1
我以前从未使用过 Nginx,我想知道我这样做是否“正确”,
有各种各样的初学者文档可供使用@nginx 社区我认为您应该先阅读这些指南,如果有具体问题再回来。
答案2
您应该能够使用嵌套位置来解决这个问题。您可能需要摆弄包含项以避免重复太多。
location /tt-rss/ {
root /my/install/dir/for/ttrss;
index index.php;
# block these
location ~* (include/|lock/|utils/|locale/|classes/*) {
deny all;
}
# PHP ttrss
location ~ \.php$ {
...
}
}
答案3
您必须在 /etc/nginx/sites-enabled/ 创建
ttrss 这样的文件是你的虚拟主机
server {
listen 80;
server_name localhost;
root /var/www/;
server_tokens off;
access_log /dev/null;
error_log /var/log/nginx/ttrss.error.log;
index index.php;
location ~ \.php${
{Your PHP Configuration}
}
}
- 保存文件。
然后重新启动 nginx 以使更改生效
/etc/init.d/nginx restart
我希望这能帮到你