Nginx位置匹配Rails路由的任何路径

时间:2017-06-12 05:04:17

标签: ruby-on-rails-4 nginx ubuntu-16.04 nginx-location

我希望我的nginx能够从任何请求或路径提供静态index.html页面。 我有以下配置。

server {
    listen 80;
    server_name mydomain.com *.mydomain.com;
    location / {
            root /var/www/project-name;
            passenger_enabled on;
    }
}

当URL为" mydomain.com"或" abc.mydomain.com"时,这不起作用,但不是" abc.mydomain.com / {{1} }"

nginx的错误日志是:users/sign_in没有这样的文件或目录。

我在该位置尝试了很多正则表达式,但没有运气。

更新: 我的index.html文件位于/var/www/project-name/users/sign_in

2 个答案:

答案 0 :(得分:0)

nginx中的

public路径指向server { listen 80; server_name mydomain.com *.mydomain.com; location / { root /var/www/project-name/public; passenger_enabled on; } } 目录。

尝试以下代码:

class FooForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(FooForm, self).__init__(*args, **kwargs)
        self.fields['field1'].widget.attrs = { 'class': 'fooclass' }

    class Meta:
        model = FooModel
        fields = ['field1', 'field2']

答案 1 :(得分:0)

我写下答案,以防其他人像我一样面临类似的问题。感谢@Deadooshkha指出我的解决方案。 我将展示两种渲染静态页面的方法。一个在/opt/nginx/html,另一个在root目录。

  1. 如果您想在static.html

    内放置静态页面(/opt/nginx/html

    server { 
        listen 80;
        server_name mydomain.com *.mydomain.com;
        location / {
            try_files $uri /static.html;
            passenger_enabled on;
        }
    }

  2. 如果您想在根目录static.html

    中放置静态页面(/var/www/project-name

    server { 
        listen 80;
        server_name mydomain.com *.mydomain.com;
        root /var/www/project-name;
        location / {
            try_files $uri /static.html;
            passenger_enabled on;
        }
    }