使用nginx反向代理服务聚合物PWA

使用nginx反向代理服务聚合物PWA,nginx,polymer,polymer-2.x,nginx-reverse-proxy,Nginx,Polymer,Polymer 2.x,Nginx Reverse Proxy,我试图使用nginx为我的Polymer PWA提供一个HTTP/2反向代理,但我无法让它正常工作。普华永道以127.0.0.1:38765分装供应,效果良好。我的prpl服务器如下所示: const express = require('express') const prpl = require('prpl-server') const config = require('./build/polymer.json') const app = express() const port = 3

我试图使用nginx为我的Polymer PWA提供一个HTTP/2反向代理,但我无法让它正常工作。普华永道以127.0.0.1:38765分装供应,效果良好。我的prpl服务器如下所示:

const express = require('express')
const prpl = require('prpl-server')
const config = require('./build/polymer.json')

const app = express()
const port = 38765

app.get('*', prpl.makeHandler('./build/', config))

app.listen(port)
upstream app {
    server 127.0.0.1:38765;
    keepalive 64;
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    server_name app;  # or full domain? tried both, doesn't work

    location / {
        proxy_pass              http://app$request_uri;
        proxy_redirect          off;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header        X-Forwarded-Proto-Version $http2;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-NginX-Proxy true;
        proxy_set_header        Connection "";

        # Cache Controls
        # This section sets response expiration which prevents 304 not modified
        expires                 0;
        add_header              Pragma public;
        add_header              Cache-Control "public";
        access_log              off;

        # Security Patches
        # This section are security patches in case the client overrides
        # these values, the server re-enables it and enforce its rules
        add_header X-XSS-Protection         "1; mode=block";
        add_header X-Frame-Options          "deny";
        add_header X-Content-Type-Options   "nosniff";
    }

    ssl on;
    ssl_session_cache shared:SSL:5m;
    ssl_session_timeout 1h;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
}
我在
/etc/nginx/sites available/default
中的nginx配置如下所示:

const express = require('express')
const prpl = require('prpl-server')
const config = require('./build/polymer.json')

const app = express()
const port = 38765

app.get('*', prpl.makeHandler('./build/', config))

app.listen(port)
upstream app {
    server 127.0.0.1:38765;
    keepalive 64;
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    server_name app;  # or full domain? tried both, doesn't work

    location / {
        proxy_pass              http://app$request_uri;
        proxy_redirect          off;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header        X-Forwarded-Proto-Version $http2;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-NginX-Proxy true;
        proxy_set_header        Connection "";

        # Cache Controls
        # This section sets response expiration which prevents 304 not modified
        expires                 0;
        add_header              Pragma public;
        add_header              Cache-Control "public";
        access_log              off;

        # Security Patches
        # This section are security patches in case the client overrides
        # these values, the server re-enables it and enforce its rules
        add_header X-XSS-Protection         "1; mode=block";
        add_header X-Frame-Options          "deny";
        add_header X-Content-Type-Options   "nosniff";
    }

    ssl on;
    ssl_session_cache shared:SSL:5m;
    ssl_session_timeout 1h;
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;
}
当我转到页面时,所有依赖项似乎都是通过h2下载的,除了
ma app.html
(应用程序外壳),这给了我一个502错误。所有其他文件以200状态下载,大小与我直接转到端口38765时相同(减去一些压缩),但页面为空

我错过什么了吗?为什么shell不能正确下载?nginx反向代理的所有文件的请求URL与prpl服务器的完全相同,端口号除外


截图 当我直接访问prpl服务器时,它工作:

通过nginx反向代理时不起作用:

失败请求的某些信息:

问题与缓冲区大小太小有关,如下所述:

我补充说

proxy_buffer_size          128k;
proxy_buffers              32 32k;
proxy_busy_buffers_size    128k;

在nginx配置的
位置
部分,现在这个东西工作了。

我也有同样的问题,但这对我来说不起作用。你还有别的事要做吗?