标签: apache-httpd

如果请求不是来自 localhost,则 Apache 重定向到 https

我有一台 Centos 6.7 和 apache 2.2.15。我想将所有流量从端口 80 重定向到 443,但有一个例外。来自 localhost 的流量我想保留在端口 80 上。

现在我使用这个配置,但我不知道如何更改它

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
Run Code Online (Sandbox Code Playgroud)

centos https rewrite apache-httpd virtual-host

5
推荐指数
1
解决办法
4215
查看次数

将程序作为服务或直接运行,有什么区别

这可能是一个有点困惑的问题......

我最近开始玩 docker 并尝试设置一个基本的灯服务器。

我有一个带有 httpd、php 和 mysql 的 centos docker 映像。

但是,在 docker 容器中,我无法像通常通过 systemd / service 那样启动服务。

我可以直接通过 httpd 运行 /usr/sbin/httpd

那么,如果运行 httpd via/usr/sbin/httpd而不是 via 有systemctl start httpd什么区别呢?

是否有“正确”的方法来停止或重新启动 httpd?- 我以为我可以终止该进程,但它似乎启动了大约 10 个 apache 进程。

我很欣赏这不是一个特别集中的问题,但将不胜感激地收到任何指向相关材料的指针。

linux systemd services docker apache-httpd

5
推荐指数
1
解决办法
533
查看次数

Implementing a Captive portal using Apache

I have been trying to build a captive portal in Apache that I plan to be Apple CNA aware.

I found several relevant posts in StackOverflow, including Captive portal popups... and How to create WiFi popup login page.

我将相关的 Apache 配置定义为:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
RewriteRule ^(.*)$ http://192.168.2.1/captive/portal.html [L,R=302]

# android
RedirectMatch 302 /generate_204 http://192.168.2.1/captive/portal.html

# windows
RedirectMatch 302 /ncsi.txt http://192.168.2.1/captive/portal.html
Run Code Online (Sandbox Code Playgroud)

它工作不完全正确,因为 CNA 浏览器进入重定向循环。

我还尝试将所有相关页面放入 /captive 目录,并定义规则

RewriteRule !^captive($|/) http://192.168.2.1/captive/portal.html [L,R=302]
Run Code Online (Sandbox Code Playgroud)

但有类似的循环问题。该怎么办?

apache-httpd

5
推荐指数
1
解决办法
6529
查看次数

Apache 无法打开是符号链接的文件

我有一个文件:

js/jquery.terminal-src.js: symbolic link to ../../repo/js/jquery.terminal-src.js
Run Code Online (Sandbox Code Playgroud)

当我尝试使用浏览器打开它时:

http://localhost/projects/jcubic/terminal/test/js/jquery.terminal-src.js

我有 403 错误被禁止,文件有权限

-rw-rw----. 1 kuba kuba 291604 08-27 22:20 ../../repo/js/jquery.terminal-src.js
Run Code Online (Sandbox Code Playgroud)

和 apache2 无法打开该文件,我已经安装了 SeLinux 并且我正在使用 Fedora Distro。

我有这个 /var/log/audit/audit.log

type=AVC msg=audit(1503868547.512:625): avc:  denied  { getattr } for  
pid=519 comm="httpd" path="/home/kuba/projects/jcubic/terminal/test/css/jquery.
terminal-src.css" dev="sda3" ino=26608576 scontext=system_u:system_r:
httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=lnk_file
permissive=0
Run Code Online (Sandbox Code Playgroud)

我已将 apache 用户添加到kuba组中,并且projects/var/www/html目录中的符号链接。其他文件,甚至是目录的符号链接,都可以正常工作。

我也尝试将 kuba 组设置为每个目录甚至 /home 但这不起作用(并且所有目录都已属于kuba组)

我需要配置什么才能使 apache 打开符号链接文件?

我不想禁用 SeLinux,因为它安装在 Fedora 上有其他原因吗?

fedora selinux symlink apache-httpd

5
推荐指数
1
解决办法
1395
查看次数

64 位 linux 系统上的 32 位 apache

我只是好奇:是否有任何 64 位 Linux 系统支持 32 位版本的 Apache?据我所知,64位Linux系统只支持Apache 64位,32位Linux系统只支持Apache 32位。

编辑

我的动机只是想知道,是否以及哪个 Linux 发行版也为应用程序和/或库提供 32 位包。

64bit 32bit apache-httpd

5
推荐指数
1
解决办法
1663
查看次数

对 Apache 使用不同的 OpenSSL

我正在从源代码编译 Apache,并静态链接mod_ssl. 我希望使用与系统安装版本不同的 OpenSSL 版本。我希望以一种不影响系统其余部分(即 CentOS)的方式执行此操作,因为我希望不更改核心系统的 SSL 版本,该版本由其他已安装的软件使用,这些软件将继续由包管理器。

我怎样才能正确地做到这一点?

我尝试编译 Apache --with-ssl,它可以很好地编译它,但在尝试运行它时却找不到它。

./httpd: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我想也许我可以LD_LIBRARY_PATH在启动 Apache 时进行设置,效果很好,但不确定这是一个合适的方法。解决这个问题的推荐方法是什么?有没有更好的方法来添加替代库搜索路径的目录?

compiling dynamic-linking openssl apache-httpd

5
推荐指数
1
解决办法
5453
查看次数

一个 chroot/isolated SFTP 用户仍然可以使用 PHP 访问整个文件系统

我想在我的服务器上为我的朋友提供一个独立的网络托管空间。我做了:

useradd friend 
groupadd sftpusers
mkdir /sftp
mkdir /sftp/friend     
mkdir /sftp/friend/home
mkdir /sftp/friend/www 
usermod -aG sftpusers friend
chown friend:sftpusers /sftp/friend/home/
chown friend:sftpusers /sftp/friend/www/
usermod -d /sftp/friend/home friend 
Run Code Online (Sandbox Code Playgroud)

我将此添加到sshd_config

Subsystem sftp internal-sftp -d /home
Match Group sftpusers
ChrootDirectory /sftp/%u
Run Code Online (Sandbox Code Playgroud)

这对 Apache 配置:

<VirtualHost *:80>
  ServerName friend.example.com
  DocumentRoot /sftp/friend/www
  <Directory />
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

它有效:friend可以在 jailroot 环境中访问 SFTP 并且他不能/sftp/friend从 SFTP退出。这很好。

但我注意到他仍然可以使用 PHP 查看文件系统中的其他文件:如果他创建了一个index.php包含:

<?php …
Run Code Online (Sandbox Code Playgroud)

chroot sftp php apache-httpd

5
推荐指数
1
解决办法
145
查看次数

Apache + php-fpm:每个池、每个用户项目的适当权限?

使用不同用户(每个项目一个用户)设置 Apache 虚拟主机和 PHP-FPM 池的正确方法是什么?

\n
    \n
  • 每个用户/项目在文件访问方面彼此独立
  • \n
  • 使用普通 Apache / 的项目www-data,无法访问池化项目?
  • \n
\n

我有一个将 Apache 与虚拟主机一起使用的设置,并且我想为每个虚拟主机设置自己的php-fpm池:

\n
    \n
  • 阿帕奇虚拟主机site1.conf
  • \n
\n
<VirtualHost *:443>\n        DocumentRoot /var/www/site1/public\n\n        <Directory /var/www/site1/public>\n            Options Indexes FollowSymLinks\n            AllowOverride All\n            Require all granted\n        </Directory>\n\n    <FilesMatch \\.php$>\n        # 2.4.10+ can proxy to unix socket\n        SetHandler "proxy:unix:/run/php/php-fpm.site1.sock|fcgi://localhost/"\n    </FilesMatch>\n\n</VirtualHost>\n\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • PHP 池site1
  • \n
\n
[site1]\nuser = site1\ngroup = site1\nlisten.owner = site1\nlisten.group = www-data\nlisten.mode = 0660\n\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 目录起始于/var/www/site1: …

php apache-httpd apache-virtualhost

5
推荐指数
1
解决办法
5053
查看次数

httpd 中的目录conf、conf.d 和conf.modules.d 有什么区别?

我在 Amazon Linux 实例上安装了 httpd 软件包,并且/etc/httpd/目录包含子目录:

会议/

conf.d/

conf.modules.d/

我注意到这些是配置目录。

它们之间有什么区别?

apache-httpd amazon-linux

5
推荐指数
1
解决办法
1万
查看次数

Ubuntu:找不到 ndbm.h

我需要编译一个旧的Apache版本,1.3,编译过程失败,因为:

mod_auth_dbm.c:77:18: fatal error: ndbm.h: File or directory not found
Run Code Online (Sandbox Code Playgroud)

这个 ndbm.h 文件在哪里?

compiling ubuntu header-file apache-httpd

4
推荐指数
1
解决办法
5440
查看次数