Nginx 没有在启用的站点中拾取站点?
Posted
技术标签:
【中文标题】Nginx 没有在启用的站点中拾取站点?【英文标题】:Nginx not picking up site in sites-enabled? 【发布时间】:2012-09-24 19:35:50 【问题描述】:经过 10 多个小时的研究,我还没弄清楚为什么这不起作用!我正在尝试将我的 localhost 移动到 /etc/nginx/sites-enabled/default 中的启用站点的文件夹。
它是来自站点可用文件夹的符号链接。使用以下配置时,我使用 localhost:8080 作为我的地址得到“无法连接”
nginx.conf (/usr/local/nginx/conf/nginx.conf):
user www-data;
worker_processes 2;
events
worker_connections 1024;
http
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/sites-enabled/*;
站点可用(/etc/nginx/sites-available/default):
server
listen 8080;
root /home/myusername/myown/customdirectory;
index index.php index.html index.htm;
server_name localhost;
location /
try_files $uri $uri/ /index.html;
location /doc/
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
allow ::1;
deny all;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html
root /usr/share/nginx/www;
location ~ \.php$
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
location ~ /\.ht
deny all;
如果我将可用站点中的相关信息放到 nginx.conf 中,我可以让它工作,我只是不明白为什么它不能这样工作?
谢谢!
【问题讨论】:
您确定符号链接没有损坏吗? ls -l /etc/nginx/sites-enabled/ 是的,我确实仔细检查了符号链接,仍然没有运气 另见:***.com/questions/17413526/… 另见:askubuntu.com/questions/1195067/…。 【参考方案1】:我遇到了同样的问题。这是因为我不小心在符号链接中使用了相对路径。
你确定你使用了完整路径,例如:
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
【讨论】:
可能是相对链接中的路径不正确而不是相对链接。例如,如果您的链接不是以../
开头以向上遍历一个目录,则输入sites-available
。如果你可以cat
符号链接并获得输出,Nginx 也应该像@Hannes 所说的那样阅读它。使用绝对路径只会使不正确的路径更难处理。
没有获取文件绝对路径的命令行工具吗?
哇!这正是为什么sites-enabled is evil!
我的相对路径也不起作用,但遵循这个,它在绝对路径下工作得很好,非常感谢! :D
在 WSL(Linux 的 Windows 子系统)上,需要完整路径。感谢您的提示!【参考方案2】:
更改自:
include /etc/nginx/sites-enabled/*;
到
include /etc/nginx/sites-enabled/*.*;
解决了我的问题
【讨论】:
你是怎么想出来的?它对我有用,但这并不明显 这就是我的问题!但就我而言,它正在寻找 *.conf 而我的结局不同。我为此浪费了好几个小时!【参考方案3】:在sites-enabled/default
中包含sites-available/default
。它只需要一行。
在sites-enabled/default
(新配置版本?):
似乎包含路径是相对于包含它的文件
include sites-available/default;
请参阅include
documentation。
我相信某些版本的 nginx 允许包含/链接到其他文件,纯粹是通过使用包含文件的相对路径的单行。 (至少在我一直使用的一些“继承”配置文件中是这样的,直到新的 nginx 版本破坏了它们。)
在sites-enabled/default
(旧配置版本?):
看来include路径是相对于当前文件的
../sites-available/default
【讨论】:
以上是关于Nginx 没有在启用的站点中拾取站点?的主要内容,如果未能解决你的问题,请参考以下文章
ini 简单的NGINX服务器块用于通过DNSimple启用SSL的静态站点
由 nginx 服务的 localhost 上的多个站点,没有域名