我正在组建一个公共目录所在的rails部署 符号链接到系统上的另一个目录。这是乘客3 nginx .8。它似乎不喜欢这种设置。默认情况下,Nginx总是遵循符号链接,所以AFAIK不是做与Apache的+ FollowSymLinks等效的事情。
更新
这里有这样的内容:http://www.modrails.com/documentation/Users%20guide%20Nginx.html#application_detection
请注意Nginx的Phusion Passenger 不解析中的任何符号链接 根路径。例如,假设 你的根指向 /home/www/example.com,反过来 是一个符号链接 /webapps/example.com/public。 PHUSION Nginx的乘客将检查 /home/www/config/environment.rb,不是 /webapps/example.com/config/environment.rb。 这个文件当然不存在,而且 因此,Phusion Passenger不会 为此虚拟主机激活自己, 而且你很可能会看到一些输出 由Nginx默认生成 目录处理程序,如Forbidden 错误信息。
检测机架应用程序 通过相同的机制,例外 Phusion Passenger将寻找 config.ru而不是 配置/ environment.rb中。
所以我想知道是否有一些正确的配置符号可以解决这个问题。
答案 0 :(得分:10)
你不能使用以下内容:
mount --bind /original_path /your_ngnix_root_path
而不是使用符号链接?对于ngnix来说,这将是一个通常的目录,为什么它会指向你想要的另一个目录。
答案 1 :(得分:3)
我认为不可能使用符号链接的公共目录。我能想象的唯一解决方法是将公共目录中的任何文件和目录符号链接。
# public folder: /data/public
# app folder: /webapp/
mkdir -p /webapp/public && ln -sf /data/public/* /webapp/public/
对于/ data / public中的每个新文件或目录,您必须再次运行此命令。
答案 2 :(得分:0)
我能够使用下面链接的指南来做到这一点。
/var/www/html
中创建您的Rails应用default
。/etc/nginx/nginx.conf
文件sites-enabled
的符号链接How to Deploy Ruby on Rails with Passenger and Nginx on Ubuntu 16.04