如何在虚拟主机 proxypass 中使用前端应用程序?

问题描述 投票:0回答:1

我使用 docker 和三个容器 - 后端/前端/管理。我想使用这样的代理通行证导航到管理页面或前端 -

<VirtualHost *:80>
    ServerName cookie.com
    ServerAlias www.cookie.com

    # Proxy requests to frontend
    ProxyPass / http://frontend:4200/
    ProxyPassReverse / http://frontend:4200/

    # Proxy requests to backend with the appropriate path
    ProxyPass /admin http://admin:8080
    ProxyPassReverse /admin  http://admin:8080

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我的前端 .ember-cli 有具有此值的代理 - "proxy": "http://backend/ratata/backend/public/index.php"

当我使用后端容器端口 5004:80 时,它工作得很好,但现在使用 80:80 时,它就不行了。

因此,当我导航到本地主机时,它会加载除某些请求之外的所有内容 然后我进入 apache 记录这一点,它会挂起请求,直到超时大约 2 分钟。 -

[mpm_prefork:错误] [pid 347] AH00161:已到达服务器 MaxRequestWorkers 设置,考虑提高 MaxRequestWorkers 设置

我也明白了-

(20014)内部错误(具体信息不可用):[客户端 172.22.0.2:52218] AH01102:从远程服务器前端读取状态行时出错:4200,引用地址:http://localhost/ [Thu Feb 15 17:31:22.102014 2024] [proxy:error] [pid 516] [client 172.22.0.2:52218] AH00898:从 /api/v1/settings 返回的远程服务器读取时出错,参考:http://本地主机/

我不知道这里出了什么问题!

谢谢

laravel docker apache ember.js
1个回答
0
投票

ember-cli 并不意味着在服务器上运行,但是 在部署期间,可以“构建”项目(通过

ember build --environment=production
),然后某些服务器(例如您的后端或 nginx)为这些构建的资产提供服务。

这里是如何在 nginx.conf 中提供静态资产的示例

server {
    listen       ${NGINX_LISTENING_PORT};
    server_name  localhost;

    gzip on;
    gzip_disable "msie6";

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd+api.json;

    location / {
        root   /emberclear;

        try_files $uri /index.html;
    }
}

特别是,您想查看

try_files
的文档以了解您自己的 dockerfile + nginx 配置


在 docker 环境中,我通过这个 shell 脚本引导 nginx:

#!/usr/bin/env sh

export NGINX_LISTENING_PORT=${PORT:-80}
export VARS_TO_REPLACE='$NGINX_LISTENING_PORT'

if [ "$NGINX_CONF_DIR" = "" ]
then
    NGINX_CONF_DIR=/etc/nginx/conf.d
fi

envsubst "$VARS_TO_REPLACE" < $NGINX_CONF_DIR/default.conf.template > $NGINX_CONF_DIR/default.conf
cat $NGINX_CONF_DIR/default.conf

echo "Starting emberclear..."
nginx -g 'daemon off;'

这是我为仅 nginx 的 docker 容器提供的整个 Dockerfile:

FROM nginx:alpine

COPY dist/ /emberclear
COPY scripts/docker/run-nginx.sh /usr/local/bin
COPY scripts/docker/nginx.conf etc/nginx/conf.d/default.conf.template

EXPOSE 4201
CMD ["/usr/local/bin/run-nginx.sh"]
© www.soinside.com 2019 - 2024. All rights reserved.