gpt4 book ai didi

php - 在 Nginx 反向代理后面运行 Apache(使用 .htaccess)应用程序

转载 作者:行者123 更新时间:2023-12-05 05:47:32 25 4
gpt4 key购买 nike

我最近开始尝试对我的服务进行 Docker 化,我已经到了将已经构建了镜像的所有内容进行 Docker 化的地步。现在我正在尝试为 facileManager (FM) 构建一个图像,它还没有。我大部分时间都在使用它,但是在 Nginx 后面运行它时遇到了问题。 FM 通常是一个 apache-php 应用程序,不包含 Nginx 的安装说明。我注意到我的容器/图像是,当我通过已发布的端口直接连接到它时它工作正常,但如果我尝试通过 Nginx 连接到它,它会出错并提示 .htaccess 文件不工作。我不是 Apache 或 Nginx 方面的专家,所以我进行了 Google 搜索,但除了 Wordpress 与它的“漂亮网址”有类似问题外,我没有想出太多,所以我希望这里有人能伸出援手。

首先是该应用程序的 Github 存储库:https://github.com/WillyXJ/facileManager/tree/ea159f5f6112727de8422c552aa05b6682aa4d79/server

.htaccess 文件具体是:

<IfModule mod_headers.c>
<FilesMatch "\.(js|css|txt)$">
Header set Cache-Control "max-age=7200"
</FilesMatch>
<FilesMatch "\.(jpe?g|png|gif|ico)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

我得到的确切错误来自这里: https://github.com/WillyXJ/facileManager/blob/ea159f5f6112727de8422c552aa05b6682aa4d79/server/fm-includes/init.php#L153

if (!defined('INSTALL')) {
if (@dns_get_record($_SERVER['SERVER_NAME'], DNS_A + DNS_AAAA)) {
$test_output = getPostData($GLOBALS['FM_URL'] . 'admin-accounts.php?verify', array('module_type' => 'CLIENT'));
$test_output = isSerialized($test_output) ? unserialize($test_output) : $test_output;
if (strpos($test_output, 'Account is not found.') === false) {
$message = sprintf(_('The required .htaccess file appears to not work with your Apache configuration which is required by %1s. '
. 'AllowOverride None in your configuration may be blocking the use of .htaccess or %s is not resolvable.'),
$fm_name, $_SERVER['SERVER_NAME']);
if ($single_check) {
bailOut($message);
} else {
$requirement_check .= displayProgress(_('Test Rewrites'), false, 'display', $message);
$error = true;
}
} else {
if (!$single_check) $requirement_check .= displayProgress(_('Test Rewrites'), true, 'display');
}
}
}

Nginx 配置:

server {
listen 80;

server_tokens off;

location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

location / {
return 301 https://$host$request_uri;
}
}

server {
listen 443 ssl;

server_name bound.example.com;

ssl_certificate /etc/nginx/ssl/live/bound.example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/bound.example.com/privkey.pem;
include /etc/nginx/ssl/options-ssl-nginx.conf;
ssl_dhparam /etc/nginx/ssl/ssl-dhparams.pem;

location / {
proxy_pass http://FM.; <<< Docker service name
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
}
}

我的 Dockerfile/命令运行:https://github.com/MeCJay12/facileManager-docker

FROM php:7.4-apache

ENV TZ=UTC
ENV Version=4.2.0
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /src

RUN apt-get update \
&& apt-get -qqy install wget libldb-dev libldap2-dev tzdata \
&& wget http://www.facilemanager.com/download/facilemanager-complete-$Version.tar.gz \
&& tar -xvf facilemanager-complete-$Version.tar.gz \
&& mv facileManager/server/* /var/www/html/

RUN ln -s /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/libldap.so \
&& docker-php-ext-install mysqli ldap \
&& a2enmod rewrite dump_io

COPY php.ini /usr/local/etc/php/php.ini
RUN rm -r /src

奖金问题:当直接通过已发布的端口访问此容器/图像时,图像都被破坏了。我认为它是相关的,因为 .htaccess 文件包含对图像文件的引用。

在此先感谢您的帮助!

最佳答案

https://github.com/WillyXJ/facileManager/issues/491 中找到解决方案.需要删除 webapp 中运行不正常的支票。

关于php - 在 Nginx 反向代理后面运行 Apache(使用 .htaccess)应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70995033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com