将.htaccess改写成nginx配置格式,将不同的URL代理到不同的端口

问题描述

如何在Nginx中使用以下htaccess规则?

比如如果

用户访问 http://lovelythings.buzz/apiimg 应使用本地端口 8080。

但是当尝试访问其他路由 http://lovelythings.buzz 时,它将在端口 3000 或 3001 上进行代理

我已经在 Apache2 服务器的 .htaccess 上实现了这一点。

但在其他服务器上我安装了 Nginx 并且 Nginx 不支持 .htaccess

以下是 .htaccess,我正在尝试在 Nginx 上运行。

DirectoryIndex
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} dev.farrwest.com
RewriteRule  ^api(.*)$  http://localhost:8080/api$1 [P,L]
RewriteRule  ^img/(.*)$  http://localhost:8080/img/$1 [P,L]
RewriteRule ^(.*)?$ http://localhost:3001/$1 [P,L]

解决方法

经过一些进一步的搜索。

以下配置适合我。

server {
    listen 80;
    listen [::]:80;

    server_name lovelythings.buzz www.lovelythings.buzz;

    #root /var/www/html;
    index index.html index.htm index.nginx-debian.html; 

    location / {
        proxy_pass http://localhost:3000/;
    }

    location /assets/ {
        proxy_pass http://localhost:3000/assets/;
    }

    location /api/ {
        proxy_pass http://localhost:8080/api/;
    }

    location /graphql {
        proxy_pass http://localhost:8080/graphql;
    }
  
    location /img/ {
        proxy_pass http://localhost:8080/img/;
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...