Nginx 404某些子文件夹出错

时间:2016-08-28 07:51:02

标签: nginx http-status-code-404

诺比问题。

我已经在我的Ubuntu Droplet中设置了Parse-Server,而我目前正在处理一个问题。 我的ssl来自letsencrypt

在此档案中

/etc/nginx/sites-enabled/default

我有以下

# HTTP - redirect all requests to HTTPS
server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;
    server_name example.com;
    return 301 https://$host$request_uri;
}

# HTTPS - serve HTML from /usr/share/nginx/html, proxy requests to /parse/
# through to Parse Server
server {
        listen 443;
        server_name example.com;

        root /usr/share/nginx/html;
        index index.html index.htm;

        ssl on;
        # Use certificate and key provided by Let's Encrypt:
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

        # Pass requests for /parse/ to Parse Server instance at localhost:1337
        location /parse/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:1337/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        }
        location /test/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:1337/test/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        }
        location /dashboard/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:4040/dashboard/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        }

        location / {
                try_files $uri $uri/ =404;
        }
}

所以以下链接工作正常

但他们正在工作的默认文件的原因是代码工作正常。 我无法对所有解析的目录执行此操作,例如

收到404错误。

有没有办法让所有页面都可用,而无需在default文件中配置它们?

更新

所以当我把它放在我的默认文件

中时
    location /parse/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:1337/parse/;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_redirect off;
    }

我没有404错误。这是因为proxy_pass http://localhost:1337/parse/与我在此发布的第一个文件不同。

但是,无论/parse/还是/something/等,我怎样才能为所有请求执行此操作?我不能在这里找到我将在服务器内创建的所有文件夹和可能的链接。因为在这个域名,我还会设置一个会有/assets/等的网站,并且需要每个网站。

是否有任何代码可以包含将要创建的所有可能链接?

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式组捕获location条目的部分内容,例如

location /(.*) {
        ...
        proxy_pass http://localhost:1337/$1;
        ...
}