简体   繁体   English

nginx位置优先

[英]nginx location blocks precedence

I have a situation where I want to proxy pass the / block to another local process and try files for the /app route. 我遇到一种情况,我想代理将/块传递给另一个本地进程,并尝试/app路由的文件。

What is happening is that only / is called and this /app is skipped entirely. 发生的是仅/被调用,而该/app被完全跳过。

root /home/ubuntu/frontend/html/public;
location /app {
    try_files $uri /index.html;
}
location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-Proto https;
    proxy_set_header  X-Forwarded-For $remote_addr;
    proxy_set_header  X-Forwarded-Host $remote_addr;
    proxy_pass http://171.11.33.222;
}

I ended up using multiple paths as none of the solutions i found was working. 由于没有找到有效的解决方案,我最终使用了多条路径。

If someone find a better answer, please guide me. 如果有人找到更好的答案,请指导我。

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    root /home/ubuntu/frontend/app/public;

    index index.html index.htm;

    # Make site accessible from domain
    server_name www.domain.com;

    if ($ssl_protocol = "") {
        rewrite ^ https://$host$request_uri? permanent;
    }

    # goes to my default application folder
    # anything that starts with 'app'
    location  /app {
        try_files $uri /index.html;
    }

    # everything below goes to my local server
    location = / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
    location /assets {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
    location /blog {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
    # anything that starts with '2' like wordpress posts
    location ^~ /2 {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
    location /home {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
    location /about-us {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
    # anything that starts with 'wp' like wordpress admin
    location ^~ /wp {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
    # anything other static urls
    location ~ ^/(terms-conditions|kyc-aml|privacy-policy) {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Host $remote_addr;
        proxy_pass http://172.31.33.222;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM