nginx 不会将外部请求传递到本地主机

nginx 不会将外部请求传递到本地主机

Jetty 服务器在 localhost:8080 上运行,成功地当我通过 curl (putty) 发出请求时的响应:

curl -H "Content-Type: application/json" -X POST -d '{"message":"Hi"}' http://localhost:8080

我有以下nginx.conf配置:

server{
        listen 80;
        server_name 52.27.79.132;
        root /data/www;
        index index.html

        # static files: .png, .css, .js...
        location /static/ {
           root /data/www;
        }

        location ^~/api/*{
            proxy_pass        http://localhost:8080;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  Host $http_host;
        }

    }

# include /etc/nginx/sites-enabled/*;

当 Jetty 服务器收到对“/”的请求时,Java servlet 运行

浏览器成功返回 index.html 页面,但是当 javascript 发出 AJAX 请求时'http://52.27.79.132/api/'我收到 404 错误


有人知道为什么吗?

答案1

您的版本中的正则表达式不正确。但是,您实际上不需要正则表达式匹配,因此您可以使用此版本:

location /api {
    proxy_pass        http://localhost:8080;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $http_host;
}

如果您出于某种原因想要使用正则表达式,第一行应该如下所示:

location ^~ ^/api/.*

点表示任意字符,星号表示重复 0 次或更多次。

在您原来的位置行中,您重复了/0次或更多次。

相关内容