我有3个域名,正在尝试使用Nginx将所有3个站点托管在一台服务器(数字海洋水滴)上。
谜题1。命名为mysite2。命名为mysite3。名称
其中只有一个有效。另外两个导致403个错误(以相同的方式)。
在我的nginx错误日志中,我看到:[error]13108#0:*1目录索引“/usr/share/nginx/mysite2.name/live/”被禁止
。
我的站点已启用配置为:
server {
server_name www.mysite2.name;
return 301 $scheme://mysite2.name$request_uri;
}
server {
server_name mysite2.name;
root /usr/share/nginx/mysite2.name/live/;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.html index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
所有3个站点都有几乎相同的配置文件。
每个网站的文件都在 /usr/share/nginx/mysite1.name/someFolder这样的文件夹中,然后 /usr/share/nginx/mysite1.name/live是一个符号链接。(mysite2和mysite3也一样。)
我已经看过Nginx 403禁止所有文件,但这没有帮助。
有什么想法可能是错误的吗?
如果您只是想列出目录内容,请使用autoindex-on
如:
location /somedir {
autoindex on;
}
server {
listen 80;
server_name domain.com www.domain.com;
access_log /var/...........................;
root /path/to/root;
location / {
index index.php index.html index.htm;
}
location /somedir {
autoindex on;
}
}
server {
server_name www.mysite2.name;
return 301 $scheme://mysite2.name$request_uri;
}
server {
#This config is based on https://github.com/daylerees/laravel-website-configs/blob/6db24701073dbe34d2d58fea3a3c6b3c0cd5685b/nginx.conf
server_name mysite2.name;
# The location of our project's public directory.
root /usr/share/nginx/mysite2/live/public/;
# Point index to the Laravel front controller.
index index.php;
location / {
# URLs to attempt, including pretty ones.
try_files $uri $uri/ /index.php?$query_string;
}
# Remove trailing slash to please routing system.
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
然后浏览器中唯一的输出是一个Laravel错误:“哎呀,好像出了什么问题。”
不要运行chmod-R 777应用/存储(注意)。让世界可写的东西是糟糕的安全性。
chmod-R 755应用程序/存储
工作正常且更安全。
如果您关闭了目录索引,并且出现此问题,可能是因为您正在使用的try_文件有一个目录选项:
location / {
try_files $uri $uri/ /index.html index.php;
} ^ that is the issue
删除它,它应该工作:
location / {
try_files $uri /index.html index.php;
}
TL; DR:这是因为nginx将尝试索引目录,并被自己阻止。抛出OP提到的错误。
try\u files$uri$uri/
意味着从根目录中,尝试由uri
指向的文件,如果该文件不存在,则尝试一个目录(因此为/
)。当nginx访问目录时,它会尝试为其编制索引,并将其中的文件列表返回给浏览器/客户端,但默认情况下,目录索引被禁用,因此它会返回错误“nginx 403错误:禁止使用[folder]的目录索引”。
目录索引由自动索引
选项控制:https://nginx.org/en/docs/http/ngx_http_autoindex_module.html
问题内容: 我正在将dompdf插件用于codeigniter:http : //codeigniter.com/wiki/PDF_generation_using_dompdf/ 从表单生成pdf。这在localhost上有效,但在实时服务器上,我在错误日志中得到了此信息: 知道这意味着什么吗?我已经搜索了答案,发现了一些建议编辑httpd.conf的方法,但是我无权访问。 我也尝试过将一个空白
问题内容: 因此,我正在用angularjs 1构建一个cordova / phonegap应用程序,并且试图在该应用程序的专用目录/沙箱中保存和读取一个名为calendar.txt的文件,但不能。 调试时我的控制台日志显示没有错误,如果文件不存在则正在创建文件,并且文件正在正确读取。但是事实并非如此。在设备上构建并运行时,不会保存数据。在指定的位置也没有创建文件。 我在控制台上记录了它试图使用的
对于一个拥有庞大代码库的项目来说,这个索引时间是非常慢的。
问题内容: 我制作了供个人使用的python脚本,但不适用于Wikipedia … 这项工作: 这不起作用: 这是错误: 问题答案: 在当前代码内: Python 2.X 的Python 3.X 带有Selenium的Python 3.X(执行Javascript函数) 修改后的版本起作用的原因是因为Wikipedia检查User-Agent是“流行的浏览器”
问题内容: 如何使用Python获取目录中现有的文件夹名称? 我想将所有子文件夹保存到列表中,以便在此之后使用名称,但是我不知道如何读取子文件夹名称? 谢谢你的帮助 问题答案: 您可以使用 编辑 如果您只想要第一个级别,而不是真正地“遍历”子目录,则代码更少: 这并不是真正的目的。如果您确实只想要一个子目录级别,也可以使用Yannik Ammann建议的方法:
我想问一下如何使用Java知道目录/文件夹中的文件/文件类型。问的原因是,目前,我有一个情况,将有两个不同类型的文件存在于文件夹中,其中一个是基于Java的,另一个是Python。我想使用Java作为一种语言,以编程方式检查解压缩文件夹中的类型文件是python(.py)还是Java(.Java)。你知道怎么做吗?有什么建议吗?在同一文件夹中不可能有两种类型的文件。话虽如此,该文件要么全部在Jav