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 没有在启用的站点中拾取站点?的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 从不正确的根目录读取站点文件

如何为你的WWW站点启用HTTPS?

ini 简单的NGINX服务器块用于通过DNSimple启用SSL的静态站点

由 nginx 服务的 localhost 上的多个站点,没有域名

ini 带有Homebrew的Mac OS X的Nginx配置,使用启用了站点的目录。

SharePoint Online 站点启用内容编辑器部件