我有一个网站托管在本地服务器(CentOS 5.x)(主机名:xxx.yyy.local,IP:192.168.5.25)。我可以从本地网络在浏览器中输入服务器 IP 地址来浏览该网站,例如:http: //192.168.5.25/support
如何获取http://192.168.5.25/support的别名,例如:http://mycompany/support?
请注意,这仅对于内部网络是必需的。我不想在我的网络之外访问此网站。
我无法访问我最近在 Ubuntu AWS EC2 实例上设置的 Web 服务器:
client:~ user$ curl yyy.yyy.yyy.yyyy
curl: (7) Failed to connect to yyy.yyy.yyy.yyyy port 80: Operation timed out
Run Code Online (Sandbox Code Playgroud)
Apache 已在 AWS 实例上启动并运行:
ubuntu@server:~$ sudo service apache2 status
* apache2 is running
Run Code Online (Sandbox Code Playgroud)
并且80端口已开放
ubuntu@server:~$ sudo netstat -plunt | grep apache2
tcp6 0 0 :::80 :::* LISTEN 2968/apache2
Run Code Online (Sandbox Code Playgroud)
到目前为止,我在设置 Web 服务器方面还没有那么丰富的经验,但据我所知,Apache 在安装后应该可以立即访问。我的情况可能出了什么问题?
请原谅我问这个问题的无知。我花了很多时间来发现如何指定“公共地址”而不是硬编码和 IP 地址。
根据 Apache 手册绑定到地址和端口:
这如何与虚拟主机一起工作
Listen 指令不实现虚拟主机 - 它只告诉主服务器要侦听的地址和端口。如果没有使用指令,服务器将对所有接受的请求以相同的方式运行。但是,可用于为一个或多个地址或端口指定不同的行为。要实现 VirtualHost,必须首先告诉服务器侦听要使用的地址和端口。然后应该为指定的地址和端口创建一个部分来设置这个虚拟主机的行为。请注意,如果为服务器未侦听的地址和端口设置了 ,则无法访问它。
手册给出了以下示例:
Run Code Online (Sandbox Code Playgroud)Listen 0.0.0.0:80 Listen 192.0.2.1:80
硬编码 IP 地址对我们来说是有问题的,因为托管服务提供商有时会更改 IP 地址。我们想要一些无需干预就能“一直有效”的东西。上一次更改时,我出差在外,因此该站点仅关闭了一个多星期。
我们尝试了如下猜测,但导致服务器无法启动:
Listen ${PUBLIC_IP}:80
Run Code Online (Sandbox Code Playgroud)
指定“公共地址”的变量名是什么?
我记得使用 apache2 的日志记录模块或附加组件来检查进出我的网络服务器的 POST/PUT/GET 数据的内容。
根据当时的屏幕截图,这是日志的样子:
--80852032-A--
[09/Apr/2018:16:04:31 --0700] Wsvxf6wQyCwAAAajw9gAAAAD 10.6.30.254 11378 10.6.30.44 433
--80852032-B--
POST / HTTP/1.1
Host: 172.18.64.136
Accept: */*
testheader: testvalue
Content-Length: 8
Content-Type: application/x-www-form-urlencoded
--80852032-C--
testbody
--80852032-F--
HTTP/1.1 200 OK
Upgrade: h2,h2c
Connection: Upgrade
Last-Modified: Fri, 22 Mar 2013 17:15:18 GMT
ETag: "10d-4d88699718396"
Accept-Ranges: bytes
Content-Length: 269
Vary: Accept-Encoding
Content-Type: text/html
--80852032-E--
<html><body><h1>It works!</h1>
<p>Server pc44</p>
<p>eth0: 10.6.30.44/24
eth1: 172.16.200.44/24 2001:172:16:200::44/64<p>
<p>Service:
http 80 8080 443 8443
ftp 21 2121
smtp 25 8025 465 8465
pop3 …Run Code Online (Sandbox Code Playgroud) 如何避免apache允许下载某些文件?(例如 .py 和 .sh)
我想避免像这样提供和下载文件
www.site.com/file.sh
www.site.com/file.py
Run Code Online (Sandbox Code Playgroud)
但我试过这样做
<Files ~ "^\.sh">
Order deny,allow
deny from all
</Files>
<Files ~ "^\.py">
Order deny,allow
deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)
还有这个
<FilesMatch "\.(sh|py)$">
Order deny,allow
deny from all
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
似乎没什么用,我试着把文件放进去
/etc/apache2/apache2.conf
还
/etc/apache2/sites-available/default
没有任何效果,apache 仍然让我下载文件。
我想以 apache 组中的用户身份编辑我的服务器文件,因此,我需要将chmod所有文件以 user 身份添加到 0775 apache。但是,我不能su apache。我不知道它的密码,输入空密码不起作用。
我有一台带有 LAMP 和 PHPMyAdmin (PMA) 的远程机器。让我们假设这个发行版是 Debian/Ubuntu。
如果我通过apt install phpmyadmin(这将使其安装在/usr/share/phpmyadmin/我认为下)安装 PMA,那么我将无法根据该灯上托管的网站域导航到 PMA(以下将出错):
example-1.com/phpmyadmin
example-2.com/phpmyadmin
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,我必须通过 say 导航MY_IP_ADDRESS/usr/share/phpmyadmin/才能成功访问 PMA。
但是,如果我通过以下方式直接在文档根目录上安装 PMA,我确实能够根据域导航到 PMA(如上所示):
pma="[pP][hH][pP][mM][yY][aA][dD][mM][iI][nN]"
cd /var/www/html/
rm -rf ${pma}*
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
unzip ${pma}*.zip
mv ${pma}*/ phpmyadmin/
rm ${pma}*.zip
unset pma
cd
Run Code Online (Sandbox Code Playgroud)
一方面,安装PMAapt install phpmyadmin简单方便。另一方面,但不允许我根据域导航到它。另一方面,我确实想仅根据域导航到它。
如果我没有错,符号链接可能会有所帮助。我的方向是否正确(我现在无法测试)?
我一直在尝试在本地主机上将我的项目设置为符号链接/var/www/html,我可以访问放置在其中的普通文件或目录html,但是当我创建符号链接时some/other/path,它给出 403 Forbidden 并error_log说AH00037: Symbolic link not allowed or link target not accessible: /var/www/html/path/to/project。
现在我在这里和其他 StackExchange 网站上进行了相当广泛的搜索,但没有答案。我读到了关于httpd.conf Directory标签的信息Indexes FollowSymlinks,我也有我的默认配置/var/www/html。我还更新了权限并尝试使用root,apache和我自己user作为符号链接所有者和实际目录或文件所有者,但似乎没有任何效果。
我还在.htaccess我的实际项目目录中放置了一个文件,其中包含此文件
Options Indexes
Run Code Online (Sandbox Code Playgroud)
我不明白是否有必要,这只是我尝试过的解决方案的一部分。
如果我需要做任何其他选项,请告诉我,因为我认为这可能会被标记为重复,但我已经搜索了这个问题的答案并遵循了不同的建议。
谢谢
系统
我有 Fedora 32,默认 apache httpd 作为服务运行
编辑:
正如评论中提到的,我应该检查 SELinux,我将其设置为Permissive模式,但没有更改任何内容,它仍然是 403 Forbidden。
我正在使用 Ubuntu 10.04 Lucid Lynx Server 设置虚拟机。
我一直在阅读书中有关使用 SSL 证书设置 Apache 的部分:“开始 Ubuntu LTS 服务器管理 - 第 2 版”
与官方文档相反,本书建议在使用 SSL 设置 Apache 时始终使用“密码短语”(以在私有 SSL 密钥遭到破坏时保护您的声誉)。
如果您设置了“密码短语 SSL 密钥”,则每次启动 Apache 时都需要输入密码短语。如果 Apache 在 Ubuntu 启动时自动启动,这是一个小问题。
然后在第 338 页上提供了一个提示,以防止 Apache 在启动时启动。
...为确保它不会自动启动,请
NO_START=0在/etc/default/apache2
我相应地修改了该/etc/default/apache2文件,重新启动,Apache2 仍在尝试在启动时启动。这NO_START=0条线似乎没有效果。
当我浏览网络上的论坛时,似乎大多数人都有问题,然后通过简单地使用没有密码的证书来解决问题。
有谁知道防止 Apache 在引导时启动密码安全SSL 的 Apache的最佳实践方法吗?
我们通常会看到个人网页,例如http://example.com/~someone/,在这种情况下,“某人”是“example.com”的用户。
默认情况下如何启用此功能,因此每当我们添加新用户“foo”时,http://example.com/~foo/都会自动创建?“~someone”中的波浪号是可选的、可定制的吗?
软件环境:
网络服务器:Apache 或 Yaws(基于 Erlang 的网络服务器)
apache-httpd ×10
debian ×3
permissions ×2
symlink ×2
webserver ×2
amazon-ec2 ×1
architecture ×1
aws ×1
dns ×1
fedora ×1
hostname ×1
ip-address ×1
logs ×1
multiuser ×1
openssl ×1
php ×1
phpmyadmin ×1
security ×1
services ×1
su ×1
sudo ×1
ubuntu ×1