标签: http

php-fpm 使用上游和位置有什么区别?

我一直在四处寻找,但找不到直接的答案,如果有人可以澄清这一点,将不胜感激,谢谢!

location ~ \.php$ {
    try_files      $uri = 404;
    fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}
Run Code Online (Sandbox Code Playgroud)

或/与?

upstream php {
    server         unix:/run/php-fpm/php-fpm.sock;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

linux http configuration nginx php-fpm

21
推荐指数
2
解决办法
3万
查看次数

X-FORWARDED-FOR 可以包含多个 IP

可以X-FORWARDED-FOR包含多个IP地址吗?如果是这样,为什么?一个说明性的例子会很棒。

http http-headers

20
推荐指数
2
解决办法
2万
查看次数

使用 nginx 的单个端口处理 http 和 https 请求

我想知道 nginx 是否能够在同一个端口上处理 http 和 https 请求。[*]

这就是我想要做的。我正在运行处理 http 请求的 Web 服务器 (lighttpd),以及通过 https 为文档树的特定部分提供服务的 C 程序。这两个进程运行在同一台服务器上。

在防火墙级别,我只能有一个端口将流量转发到此服务器。所以我想做的是在这台服务器上设置 nginx 以便它侦听单个端口上的请求,然后:

A) 重定向所有http://myhost.com/*请求,以便它们转到 localhost:8080(lighttpd 正在侦听的位置)

B) 如果用户请求以 https://myhost.com/app 开头的 URL,它会将该请求发送到 localhost:8008(C 程序)。请注意,在这种情况下,远程浏览器和 nginx 之间的流量必须加密。

你认为这可能吗?如果是,怎么做?

我知道如何使用两个不同的端口来做到这一点。我面临的挑战是仅使用一个端口来完成此操作(不幸的是,我无法控制此特定环境中的防火墙配置,因此这是我无法避免的限制)。使用诸如通过 ssh 进行反向端口转发来绕过防火墙的技术也不起作用,因为这应该适用于只有 Web 浏览器和 Internet 链接的远程用户。

如果这超出了 nginx 的能力,您知道还有其他产品可以满足此要求吗?(到目前为止,我在使用 lighttpd 和 pound 进行设置时没有成功)。我也更喜欢避免使用 Apache(尽管如果这是唯一可能的选择,我愿意使用它)。

提前致谢,亚历克斯

[*] 为了清楚起见,我说的是通过同一端口处理加密未加密的 HTTP 连接。加密是通过 SSL 还是 TLS 完成都没有关系。

http nginx https lighttpd

19
推荐指数
4
解决办法
3万
查看次数

如何在 Amazon EC2 上设置端口转发

我有一个在 Amazon EC2 上运行的 Web 应用程序。它侦听端口 9898。

我可以通过输入IP地址和端口号来访问它。

例如 1.2.3.4:9898

但是,我真正希望能够做的是不必输入端口号。

对此进行研究,看起来端口转发可能是解决方案 - 即将在默认端口 (80) 上收到的 http 请求转发到我的非标准端口 (9898)。

这是正确的方法吗?如果是这样,我如何在 EC2 上进行设置?

如果没有,那么我如何实现我想要的?

在此先感谢您的帮助。

更新

我应该提到 EC2 实例是 Windows Server 2012 AMI。

http web-server port-forwarding amazon-ec2 windows-server-2012

19
推荐指数
2
解决办法
6万
查看次数

HTTP GET 方法如何与 DNS 协议相关联?

我正在尝试了解 TCP/IP 堆栈中的应用层协议。我知道 HTTP 和 DNS 协议都停留在顶层(应用层)。因此,当浏览器想要访问资源时,它必须向 HTTP 服务器发送请求,例如:

GET www.pippo.it/hello.htm HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

这个请求遵循 HTTP 协议的规则,它使用页面 URL,而不是 IP 地址。

我知道将 URL 转换为 IP 需要 DNS 请求。所以我的问题是:HTTP 会调用 DNS 协议吗?这对我来说似乎是不可能的,因为两者都是顶层协议(因此 DNS 无法为 HTTP 提供服务)。以同样的方式,即使 TCP(停留在较低级别)也无法在更高级别的协议(如 DNS)上请求服务。

那么DNS请求什么时候发生呢?谁执行了这样的请求?

domain-name-system tcpip http

19
推荐指数
3
解决办法
2万
查看次数

nginx:转储 HTTP 请求以进行调试

  • Ubuntu 10.04.2
  • nginx 0.7.65

我看到一些奇怪的 HTTP 请求来到我的 nginx 服务器。

为了更好地了解发生了什么,我想转储此类查询的整个 HTTP 请求数据。(即,将所有请求标头和正文转储到我可以阅读的地方。)

我可以用 nginx 做到这一点吗?或者,是否有一些 HTTP 服务器允许我开箱即用,我可以通过 nginx 代理这些请求?

更新:请注意,此框有大量正常流量,我想避免在低级别(例如,使用tcpdump)捕获所有流量并稍后将其过滤掉。

我认为首先在重写规则中过滤良好的流量会容易得多(幸运的是,在这种情况下我可以很容易地编写一个),然后只处理虚假流量。

而且我不想将虚假流量引导到另一个盒子,只是为了能够在那里使用tcpdump.

更新 2:为了提供更多详细信息,虚假请求foo在其 GET 查询中具有命名(例如)参数(参数的值可能不同)。好的请求保证永远不会有这个参数。

如果我可以通过它tcpdumpngrep以某种方式过滤- 没问题,我会使用这些。

ubuntu http nginx

18
推荐指数
2
解决办法
3万
查看次数

将所有请求重定向到 HTTPS,除了一个子目录

我正在尝试从我的 nginx 网络服务器上的自签名证书转移到 Let's Encrypt 证书。

目前,我将所有请求重定向http/80https/443,它使用我不久前创建的自签名证书。

现在 - 据我所知,Let's Encrypt 向端口 80 发出请求(因为我正在使用 的webroot选项certbot)。这些请求被重定向,导致证书生成失败。

我尝试使用以下服务器块来实现这一点,监听端口 80:

server {
        listen  80;     
        server_name     sub.domain.tld;
        server_tokens   off;


        location /.well-known {
                root /var/www/letsencrypt;
        }

        location / {
                return 301 https://$host$request_uri;
        }
}
Run Code Online (Sandbox Code Playgroud)

但是无论如何/.well-known都将请求重定向到https/443

我如何可以重定向所有的请求来自http/80https/443,除了要求/.well-known/

http nginx https redirect lets-encrypt

18
推荐指数
1
解决办法
8601
查看次数

在 Apache 中对 HTTP OPTIONS 请求返回“200 OK”

我正在尝试在不涉及任何代码的情况下实现跨域HTTP 访问控制

我的 Apache(2) 服务器使用此块返回正确的访问控制标头:

Header set Access-Control-Allow-Origin "*"                   
Header set Access-Control-Allow-Methods "POST, GET, OPTIONS" 
Run Code Online (Sandbox Code Playgroud)

我现在需要阻止 Apache 在浏览器发送HTTP OPTIONS请求(它存储在REQUEST_METHOD环境变量中)时执行我的代码,返回200 OK.

当请求方法为 OPTIONS 时,如何配置 Apache 以响应“200 OK”?

我试过这个mod_rewrite块,但访问控制头丢失了。

RewriteEngine On                  
RewriteCond %{REQUEST_METHOD} OPTIONS 
RewriteRule ^(.*)$ $1 [R=200,L]       
Run Code Online (Sandbox Code Playgroud)

security mod-rewrite http apache-2.2

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

statsd 和 Graphite 的高可用、Web 可访问和可扩展部署

我想设置 statsd/graphite,以便我可以记录在 HTML 设备上运行的 JS 应用程序(即不在包含的 LAN 环境中,并且可能有大量我无法直接控制的传入数据)。

我的限制:

  • 入口点必须说 HTTP:这是通过一个简单的 HTTP-to-UDP-statsd 代理解决的(例如 github 上的 httpstatsd)
  • 必须抵抗单个服务器的故障(与墨菲定律作斗争:)
  • 必须是水平可扩展的:webscale,宝贝!:)
  • 架构应该尽可能简单(和便宜)
  • 我的服务器是虚拟机
  • 数据文件将存储在文件管理器设备上(使用 NFS)
  • 我可以使用 tcp/udp 硬件负载平衡器

总之,数据路径:[client] -(http)-> [http2statsd] -(udp)-> [statsd] -(tcp)-> [graphite] -(nfs)-> [filer]

到目前为止我的发现:

  • 扩展 http2statsd 部分很容易(无状态守护进程)
  • 缩放 statsd 部分似乎并不简单(我想我最终会在石墨中得到不连贯的值,例如 sum、avg、min、max ...)。除非 HTTP 守护进程进行一致的散列以对密钥进行分片。也许是一个想法......(但接下来是 HA 问题)
  • 缩放石墨部分可以通过分片(使用碳继电器)来完成(但这也不能解决 HA 问题)。显然,多个耳语实例不应写入相同的 NFS 文件。
  • 缩放文件管理器部分不是问题的一部分(但 IO 越少越好:)
  • 扩展 webapp 似乎很明显(虽然我没有测试过),因为它们只读取共享的 NFS 数据

所以我想知道是否有人有经验和最佳实践可以分享一个可靠的 statsd/graphite 部署?

http scalability high-availability graphite statsd

17
推荐指数
1
解决办法
1034
查看次数

在某些情况下,Referer 从 HTTPS 传递到 HTTP...如何?

理论上,浏览器不会将引用信息从 HTTPS 传递到 HTTP 站点。根据我的经验,这一直是正确的。但我刚刚发现了一个例外,我想了解它为什么有效,以便我也可以使用它。

https://www.google.ca/上搜索“我的推荐人是什么”,
例如:https : //www.google.ca/search? q = what+is+my+referer

有几个站点会显示引用。他们似乎都在不应该“工作”的时候“工作”。例如,单击 www.whatismyreferer.com 之一。我得到:

 Your referer:
 https://www.google.ca/
Run Code Online (Sandbox Code Playgroud)

请注意,有时,我很少会得到“没有推荐人”的结果。返回并再次单击该链接,下次它就会“工作”。

这不应该发生。www.whatismyreferer.com 是一个非 HTTPS 站点。不应传递引用标头,但确实传递了。

这里发生了什么,我如何从我的 HTTPS 站点到我链接到的 HTTP 站点执行相同的操作?

http https http-headers

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