我们有一个内部应用程序,我想让 apache httpd 服务器基于每个客户端 ips 创建新的日志文件。在文档中,我看到您可以有多个日志。
http://httpd.apache.org/docs/2.2/logs.html
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
CustomLog logs/referer_log "%{Referer}i -> %U"
CustomLog logs/agent_log "%{User-agent}i"
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是这样的。
CustomLog logs/%h-access_log common
Run Code Online (Sandbox Code Playgroud)
其中 %h 被外推到 IP 地址,即 1.1.1.1-access_log
我想有一种 mod_perl 方法可以做到这一点,但只是想知道在我编写模块之前是否有人知道通过标准配置来做这样的事情的方法。
不知道为什么,但我所有的错误页面都以 200 响应。这对我来说有点奇怪,页面存在但它们不应该有相应的状态代码吗?如何让 Nginx 使用 404 状态代码呈现我的 404 页面?
例如:
? curl -I http://example.com/404
HTTP/1.1 200 OK <<--------------------------- WTF! THIS SHOULD BE 404!!
Server: nginx/1.8.0
Date: Tue, 17 Apr 2018 02:24:04 GMT
Content-Type: text/html; charset=UTF-8
...
Run Code Online (Sandbox Code Playgroud)
这是我的配置的相关部分:
server {
listen 80 default_server;
server_name example.com;
root /var/www/example/static;
index index.html;
try_files $uri $uri/ $uri.html =404;
# error pages
error_page 400 =400 /400; # bad request
error_page 401 =401 /401; # unauthorized
error_page 403 =403 /403; # forbidden
error_page 404 =404 /404; # …Run Code Online (Sandbox Code Playgroud) 我的服务器是centos 7, php 5.4, apache 2.4。我的网站位于/var/www.
至于apache是唯一一个用户读或写/var/www,我将所有文件和文件夹的所有者和组设置为apache:
对于文件夹和文件只读:-r------- 1 apache apache 922 Jun 3 2014 connect.php
对于需要写入的文件:-rw------- 1 apache apache 922 Jun 3 2014 connect.php
表示只有600或400文件权限。(*.php 不需要x权限)
至于文件夹权限,只有500或700。
这应该是最佳实践,因为提供尽可能少的广告许可。
有什么安全问题吗?
在某些情况下,有一个 HTTP(s) 服务器有一些我试图代理的资产,我需要使用 IP 地址而不是域来这样做。经过一些故障排除后,我意识到如果我向其发出 HTTP 请求,我会https://202.100.200.152/sushi/得到响应,并且只有在我使用域时才能得到我想要的响应https://sp.water.contoso.com/sushi/。
我确信 HTTP(s) 服务器在它前面有一个代理,可以在所有地方路由连接。我无法访问此服务器,因此我将其视为黑匣子。我想也许它通过主机头检查域,但是当我覆盖它时它仍然不起作用。
我想知道除了 HOST 标头之外还有哪些其他因素会导致我没有得到我想要的响应。
我用 CURL模拟了BAD响应:
curl -k -v -I -H 'Host: sp.water.contoso.com' https://202.100.200.152/sushi/
* Trying 202.100.200.152...
* TCP_NODELAY set
* Connected to 202.100.200.152 (202.100.200.152) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 …Run Code Online (Sandbox Code Playgroud) 我设置了以下配置:
location /upl {
root /storage/www/upl/data;
client_body_temp_path /storage/www/upl/client_tmp;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access group:rw all:r;
}
Run Code Online (Sandbox Code Playgroud)
我使用以下命令上传文件:curl -T test.txt http://x.xx.xx.xx:8080/upl
我的所有文件最终都位于数据文件夹中,但所有文件都具有相同的名称“upl”,与位置相同?!为什么:S
请帮忙
BR,
我正在尝试解决客户的问题,但我有一个(坏的?)主意......
问题 :
客户有两个 Web 服务器在他的 wan 路由器后面运行。(他大楼里的物理服务器)
每台服务器都托管不同的 Web 服务,因此无法将两台服务器合并。
路由器将端口 80 上的请求转发到服务器 A(并且不能更改),并将端口 90 上的请求转发到服务器 B。
([[编辑]]:现在服务器 B 是通过客户端的 IP 和端口 90 直接从 Web 浏览器询问的......这太糟糕了......)
我需要通过来自 1and1 共享服务器的 PHP(代理)脚本来询问服务器 B。
托管公司 (1and1) 有一个防火墙,可以防止开发人员在 21、22 和 80 以外的其他端口上发送请求。
想法:
更改我的客户端路由器的端口转发规则,以便服务器 B 可以通过端口 22 访问,并通过端口 22 上的 php 发送请求。
问题:
将端口 22 用于 http 请求是一种可怕的做法吗?
有没有一种简单的方法可以首先通过向(任何)服务器的端口 22 发送 http 请求来测试我的 PHP 代理脚本?
我们希望来自安全服务器的 HTTP 帖子在我们这边是安全的。
确实需要的职位对进行HTTPS://ourserver.com,或者它的工作原理张贴到HTTP://ourserver.com,然后通过htaccess的重定向到HTTPS?
如果后者在某些方面是正确的,那就太好了,因为我们正在查看需要手动更新的 100 个 URL。
HTTP:权威指南说
\n\n\n\n\n虚拟托管的源服务器,并且不允许资源因请求的主机而异,可能会忽略主机标头字段值。但是,任何根据主机区分资源的源服务器都必须使用以下规则来确定 HTTP/1.1 请求上所请求的资源:
\n\n\n
\n- \n
如果HTTP 请求消息中的URL是绝对的(即包含方案和主机组件),则主机标头中的值将被忽略,而采用URL。
- \n
如果HTTP 请求消息中的 URL没有主机,并且请求包含 Host 标头,则从 Host 标头获取主机/端口的值。
- \n
如果通过步骤1或2无法确定有效主机,则会向客户端返回400 Bad Response响应。
“HTTP请求消息中的URL”在哪里?
\n\n是请求行中的那个(在 HTTP 请求的第一行中,在诸如 之类的方法之后GET)吗?
谢谢。
\n在 http ( over tcp ) 中,有一个名为 keep " alive "的标头
如果所有数据包来自不同的数据包,我不明白如何在 tcp 中打开连接
来源(路由器决定- 通过互联网)
假设我没有有效的证书来处理 https 会话,我想将所有 https 请求重定向到 http。是否可以不打开 https 会话?
我在运行 Apache 的 Ubuntu 服务器上安装了安全证书。当我使用 HTTPS 协议访问我的网站时,绿色证书出现在 URL 的开头。但是,当我使用常规 HTTP 协议时,证书不会出现。这曾经有效,但我必须改变一些东西来破坏它,我不知道如何让它再次工作。有任何想法吗?谢谢
我的书举了一个例子,其中 HTTP 响应的第一行是:
HTTP/1.1 200 OK
Run Code Online (Sandbox Code Playgroud)
然后有一个表格解释了所有代码,200 等于“OK”。
那么“OK”有什么用,为什么会有这种冗余?