Articles of apache 2.4

在Apache代理后面使用gitlab,所有生成的url都是错误的

我已经使用https://about.gitlab.com/downloads/中的默认软件包在Ubuntu 12.04上设置了Gitlab {编辑澄清} 我已经build立了Apache来代理并运行安装在端口8888上的nginx服务器(或者我认为)。 由于我已经安装了Apache,我必须在localhost上运行nginx:8888。 问题是,所有图像(如头像)现在都从http://localhost:8888 ,而且所有的结帐url也是localhost – 而不是使用我的域名。 如果我更改/etc/gitlab/gitlab.rb使用该url,那么Gitlab停止工作,并给出503。 任何想法如何告诉Gitlab什么URL呈现给世界,即使它真的在本地主机上运行? /etc/gitlab/gitlab.rb看起来像: # Change the external_url to the address your users will type in their browser external_url 'http://my.local.domain' redis['port'] = 6379 postgresql['port'] = 2345 unicorn['port'] = 3456 和/opt/gitlab/embedded/conf/nginx.conf看起来像: server { listen localhost:8888; server_name my.local.domain; [更新] 如果我不指定localhost:8888作为external_url,它看起来像nginx仍在监听错误的端口。 我在/var/log/gitlab/nginx/error.log发现了这个 2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed […]

如何在Apache access.log中包含ModSecurity请求最终操作

我目前在Ubuntu Trusty上使用ModSecurity 2.7和Apache 2.4.7。 我想使用Apache的LogFormat和CustomLog指令,以便我可以包含一个字段,指示ModSecurity是否决定允许请求继续执行还是阻止请求。 我还想包含一个字段,指示允许的请求是否触发了任何仅限警告的ModSecurity规则。 我不关心这是否需要两个不同的领域,或只是一个,只要信息出现在每个Apache日志行上。 有文档build议我可以使用mod_log_config和%{…}M语法在Apache日志中包含ModSecurityvariables,但我不知道哪些variables会给我必要的信息。 我明确地试图维护SecAuditEngine RelevantOnly并且不要求每个请求的完整审计日志。 我也希望避免使用mod_unique_id或类似的做交叉日志关联的需要。 这可能吗。 怎么样?

在子目录中的FallbackResource

我使用前端控制器和以下htaccess文件pipe理大量的PHP应用程序: FallbackResource /index.php 是的,这是整个文件(每个应用程序)! 但是,有些网站位于子文件夹中,因此需要进行以下更改: FallbackResource /subfolder/index.php 正如你可能猜到的那样, /开头意味着path相对于站点/虚拟主机,这里的path需要相对于目录。 (如果我使用的是mod_rewrite而不是mod_dir ,则需要按照类似的方式将RewriteBase添加到每个子目录中。) 我认为我可以通过这样做来解决这个问题: FallbackResource index.php # No slash! 但是,当站点的重写包含斜线时,例如,如果应用程序是/store/并且其中的path是products/1234 ,则Apache将查找/store/products/index.php而不是/store/index.php然后在日志中返回一个500与以下消息: 由于可能的configuration错误,请求超过了10个子请求嵌套级别的限制。 如果需要,使用“LimitInternalRecursion”来增加限制。 使用“LogLeveldebugging”来获得回溯。 我会认为FallbackResourcepath是相对于它configuration的.htaccess文件,但它似乎实际上是相对于请求的URL。 有没有办法使FallbackResource按照我的预期行事? 如果这是答案,我可以用它的方式,但如果能做到这一点,pipe理我所拥有的网站会容易得多。 这些网站使用相同的基本代码,不同的主题和数据库连接,现在它的工作方式,现在我必须修改htaccess文件,每次部署新版本的代码(因为它被检查到Git)。 如果我们能够让人们不必每次都记住这个修改,那真是太棒了。

Apache 2.4代理外部,redirect为内部

我试图设置一个反向代理,只允许几个select的IP范围代理到一个内部主机,而我想任何其他人不在IP范围内redirect到我们的内部命名的主机。 在这个设置中,Web服务将工作,而没有VPN的人进入我们的networking将不能够导航到内部资源。 我一直试图得到这个工作没有运气,我的部分configuration目前如下: ProxyRequests Off <Proxy *> Allow from all </Proxy> <Location /> Allow From xxx.xxx.xxx.xxx/24 1xxx.xxx.xxx.xxx/23 Deny From All ProxyPass http://server.local.corp:8000/ ProxyPassReverse http://server.local.corp:8000/ </Location> 这个configuration似乎很好地阻止其他IP范围能够代理,但我不清楚我可以如何为其他人添加一个redirect语句。 编辑从第一个答案我的代码现在看起来像这样: <If "%{REMOTE_ADDR} -ipmatch 'xxx.xxx.xxx.xxx/24'"> ProxyPass / http://server.local.corp:8000/ ProxyPassReverse / http://server.local.corp:8000/ </If> 而且apache在重新启动时会抛出以下错误: ProxyPass cannot occur within <If> section Action 'configtest' failed. The Apache error log may have more […]

如何获得Mod_pagespeed输出压缩(gzip)的CSS?

Ubuntu 14.04 Apache 2.4.7 php-FPM 5.5.9 使用Apache的最新稳定的Pagespeed模块(1.9.32.3-4448)。 我正在优化一个WordPress网站的速度(带宽和渲染)。 Mod Deflate被设置。 一个插件( Better WordPress Minify )将所有css文件压缩并合并为一个(从而减less了请求的数量)。 在closuresPagespeed的情况下,如果检查生成的链接(使用FeedTheBot ),则确认使用gzip压缩了内容。 但是,如果启用了Pagespeed,则表明Gzip无法正常工作。 使用PageSpeed Insight(chrome扩展名)可以确认这一点。 这是我试过的: 添加到/etc/apache2/mods-available/pagespeed.conf ModPagespeedFetchWithGzip on SetOutputFilter DEFLATE 检查模块Deflate是否可用并启用(它出现在由apache2ctl -t -D DUMP_MODULES生成的列表中)。 事实上,如果pagespeed被closures,它适用于组合的CSS文件是另一个certificate。 你有解释吗?

Apache 2.4与PHP-FPM .htaccessredirect

我在服务器上用PHP-FPM设置了Apache 2.4。 从Apache传递到PHP-FPM我使用以下内容: ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9001/hosting_files/site.com/admin_secure/$1 “admin_secure”是虚拟主机中的DocumentRoot。 在该目录中,我有一个包含以下内容的.htaccess文件: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> 该网站的工作,直到我试图访问应该在webroot目录中的东西。 例如,如果我访问位于webroot目录内的vendors/kcfinder/browse.php ,则会出现“文件未find”错误。 如果我去webroot/vendors/kcfinder/browse.php ,它的工作原理。 我已经打开了重写和代理日志logging,看起来重写从来没有发生。 它只是发送任何我input的URL(如果它是一个PHP文件)。 有没有办法写我的ProxyPassMatch语句,以重写这样的?

Apache – 虚拟主机大量客户端可configurationSSL,反向代理

我的情况是,我们为客户端托pipe多个网站,并且所有客户端站点都只在SSL上运行。 目前,我们为Apache的每个客户端都有一个单独的虚拟主机文件。 除了服务器名称/别名和sslconfiguration部分,每个文件几乎都是相同的。 其余的configuration几乎只是一些反向代理声明,告诉apache终止ssl,然后将stream量传递给后端IIS(.net站点)。 注意:所有网站运行在同一个IP上,因此SNI被使用,似乎运作良好(没有compliants,这是很好的)。 我们拥有的另一个主要function是客户能够login他们的“客户门户”(我们的网站)并生成一个CSR到第三方获得签名并将证书交还给我们。 当他们生成CSR时,我们将私钥保存在服务器上。 问题是: 1)为每个客户端分配一个虚拟主机文件很难维护,因为它们之间的大部分文件是相同的。 (文件描述符限制也成为一个问题) 2)客户可以随时更改他们的ssl。 即他们可能只剩下2个月的证书,因此想login到他们的帐户,并获得新的企业社会责任,并在2个月内更改他们的SSL证书。 问题出现,我需要做一个“重新启动”在Apache重新加载证书。 记住所有的网站运行在同一个networking服务器,所以重新启动会影响到他们。 因此: 1)我正在考虑转移到Apache的“dynamicconfiguration大量虚拟主机”,但是,根据这个网站在这里 ,说明如下: “ 除非所有dynamic托pipe的域名都是通配子域名SSL证书覆盖的子域名,否则服务器上不能使用SSL终止 ” 但是每个站点都是自己的域名,而不仅仅是子域名。 有没有办法在Apache中使用dynamicssl用法来实现这个群集托pipe。 如果没有(我认为是这种情况),我可以把'infront'的Apache终止ssl连接,不需要重新启动? (它需要有一些方法来更改证书,但不会影响运行在同一个IP / Web服务器上的其他站点) 即(HAProxy / Pound /其他??) – > Apache – > IIS

WS协议和Apache的mod_proxy_wstunnelconfiguration:错误500

当试图通过我的Apache2服务器访问ws:// localhost:8080时,出现错误500。 该服务器运行OpenSuse Leap 42.1和Apache 2.4.16。 这些Apache2模块已启用:mod_proxy,mod_proxy_http,mod_proxy_wstunnel。 当从本地networking调用请求时,一切工作正常。 URL示例: http://<myhost-ip-address>/api/ws/<some-url> 。 它返回状态101和响应: Upgrade: websocket 。 没关系。 来自外部networking的同一种请求失败。 url示例: ws://www.mysite.com/api/ws/<some-url> 。 它返回错误500。 Apache访问日志包含: GET /api/ws/<some-url> HTTP/1.1" 500 … Apache错误日志包含: [proxy:warn] AH01144: No protocol handler was valid for the URL /api/ws/<some-url>. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included […]

使用systemd的Apache环境variables或SetEnv?

我的系统: CentOS 7.2.1511(核心) Apache 2.4.6 我有很多我想添加到Apache的环境variables。 我目前正在通过添加到我的/etc/httpd/conf.d/vhosts.conf文件,如下所示: SetEnv API_USERNAME 'my_special_username' SetEnv API_PASSWORD 'my_special_password' 我可以通过以下方式访问PHP中的两个环境variables: echo $_SERVER['API_USERNAME']; echo $_SERVER['API_PASSWORD']; // or echo getenv('API_USERNAME'); echo getenv('API_PASSWORD'); 最近 ,我发现我也可以通过systemd添加环境variables: 我创build了文件/etc/systemd/systemd/httpd.service.d/envvars.conf : [Service] Environment="API_USERNAME=my_special_username" Environment="API_PASSWORD=my_special_password" systemctl daemon-reload systemctl restart httpd 我可以通过以下方式访问PHP中的两个环境variables: echo getenv('API_USERNAME'); echo getenv('API_PASSWORD'); // $_SERVER does not work when I specify environment variables in systemd echo $_SERVER['API_USERNAME']; […]

与机器名称相同的Apache2 VirtualHost

我使用的是具有规范名称的服务器(在/etc/hostname和反向DNS中定义) server.example.com root @ server:〜#uname -a Linux server.example.com 3.16.0-4-amd64#1 SMP Debian 3.16.7-ckt11-1(2015-05-24)x86_64 GNU / Linux Apache / 2.4.10(Debian)服务器在server.example.com端口80 现在我安装了apache2并做了一些基本的configuration。 然后,我将VirtualHosts添加到/etc/apache2/sites-available并使用sites-enabled了sites-enabled符号链接。 除了ServerName server.example.com VirtualHost以外,一切正常。 当我尝试在资源pipe理器中访问该URI时,我得到默认虚拟主机的内容(没有指定ServerName )。 如果我把server.example.com.conf的ServerName改成不同的东西(比如test.example.com )并重新加载apache的configuration,那么我可以直接访问这个URI。 我想知道什么是错误的VirtualHost的ServerName相同的机器的规范名称。 而且, server.example.com.conf有DocumentRoot /var/www/subs/server ,其中包含index.html和munin文件夹。 默认的VirtualHost有DocumentRoot /var/www/html ,里面没有munin文件夹。 但是,当我尝试访问http://server.example.com/munin我可以进入/var/www/subs/server/munin ,而http://server.example.com/index.html将我/var/www/html/index.html 。 最后,当我把默认的VirtualHost的Redirect 404 / ,当我试图访问http://server.example.com/和http://server.example.com/munin时,我会得到404 增加了VirtualHosts的configuration /etc/apache2/sites-available/forum.example.com.conf : # Working subdomain configuration <VirtualHost *:80> ServerName forum.example.com ServerAdmin [email protected] […]