我使用 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://本地主机/
我不知道这里出了什么问题!
谢谢
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"]