Nginx sites-enabled,sites-available:无法在Ubuntu 12.04中的配置文件之间创建软链接

wbgh16ku  于 2023-10-17  发布在  Nginx
关注(0)|答案(4)|浏览(148)

我试图在/etc/nginx/中的sites-enabled和sites-available目录中包含服务器块的配置文件之间创建软链接。
我使用的命令是:

sudo ln -s sites-available/foo.conf sites-enabled/

当我执行时:

ls -l

结果是:

lrwxrwxrwx 1 parallels parallels 27 Aug  6 20:44 immigrationinformation.conf -> immigrationinformation.conf

其中immigrationinformation.conf -> immigrationinformation.conf部分具有红色字体的木炭。
当我尝试访问这个软链接时,我被告知它已损坏。
当我在sites-available目录中创建软链接时,

sudo ln -s sites-available/foo.conf sites-available/foo_link.conf

它正常工作。但是,如果我将其移动到启用站点的目录,链接再次断开。
我可以通过文件管理器GUI创建软链接,但不能通过命令行。我也可以创建硬链接没有问题。
我怀疑这是一个权限问题,所以我已经把所有的权限都设置为777,把目录和目录本身的权限都设置为777,把所有者也设置为root以外的权限,但是仍然没有成功。
任何帮助我将非常感激,谢谢。

gudnpqoy

gudnpqoy1#

你应该首先理解一个 symlink 的目标是一个 pathname。它可以是包含符号链接的目录的绝对相对
假设您在 /sites-available 中有foo.conf

cd sites-enabled
sudo ln -s ../sites-available/foo.conf .
ls -l

现在,您将在 /sites-enabled 中拥有一个名为foo.conf的符号链接,该符号链接具有一个目标 ../sites-available/foo.conf
需要说明的是,Apache的正常配置是潜在站点位于 /sites-available 中,启用站点的符号链接位于 /sites-enabled 中,指向sites-available中的目标。
根据你描述的设置方式,情况似乎并非如此;但这不是你主要问题。
如果你想让一个符号链接ALWAYS指向同一个文件,不管符号链接在哪里,那么目标应该是完整路径;即:

ln -s /etc/apache2/sites-available/foo.conf mysimlink-whatever.conf

下面是我的ls -l /etc/apache2/sites-enabled的输出(第1行):

lrwxrwxrwx 1 root root  26 Jun 24 21:06 000-default -> ../sites-available/default

查看符号链接的目标是如何相对于包含符号链接的目录的(它以“..”开头,表示向上移动一个目录)。
硬链接完全不同,因为硬链接的目标不是目录条目,而是文件系统Inode。

vlurs2pr

vlurs2pr2#

我的站点配置文件是sites-available文件夹中的example.conf,因此您可以创建一个符号链接,

ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
pbossiut

pbossiut3#

您可以通过像这样强制ln来覆盖现有文件../sites-enabled/myproject

sudo ln -sf ../sites-available/myproject ../sites-enabled/

然后

sudo service nginx restart
khbbv19g

khbbv19g4#

要缩短手动输入每个conf文件的时间,您可以从sites-enabled文件夹尝试:

ln -s ../sites-available/*.conf .
sudo systemctl restart nginx

相关问题