标签: proxy

使用 Nginx 作为 apache 的反向代理或独立

我已经阅读了很多关于这个问题的内容(包括本网站中的所有主题),但无法做出决定性的决定。

对于非常高负载的站点(每天数百万用户),什么被认为更好(性能和安全方面):

  1. 独立的 Nginx + PHP + SQL
  2. Nginx 作为 Apache + PHP + SQL 的反向代理

我不明白的是 - 如果 Nginx 可以运行动态内容,为什么还要使用 Apache?

php nginx proxy reverse-proxy apache-2.2

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

这种提供静态内容的尝试有什么问题?代理/反向代理是否胜过别名,或者我可以要求别名胜过代理吗?

我正在努力让 Apache 为 Django 项目提供静态文件。我的 VirtualHost 有:

Alias /static/ /home/jonathan/pragmatometer/static/

ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/
Run Code Online (Sandbox Code Playgroud)

但是对 /static/css/style.css 的请求是由 Django 进程提供的,而不是对 /home/jonathan/pragmatometer/static/css/style.css 的静态拉取。

我该怎么做才能让 Alias 胜过代理?我可以尝试为 /load/、/save/、/admin/ 拼凑几个 ProxyPass / ProxyPassReverse 定义,但这肯定是错误的方式。

那么正确的方法是什么?

proxy reverse-proxy django apache-2.2

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

基于用户名的 SSH 代理

我正在尝试根据传入的用户名在两个 ssh 服务器之间进行多路复用,即

ssh user1@testserver 将转到一个 sshd 实例,而 user2@testserver 将转到另一个。

这能做到吗?

ssh proxy

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

Apache:基于URL后缀的代理

我的团队编写了一个内部 BI 服务器,它在/users/daily或等链接处生成 HTML 报告/updates/questions

服务器是用Grails编写的,它与经典的 Apache-Tomcat 设置完美配合:

ProxyPass         /     http://localhost:8080/ nocanon
ProxyPassReverse  /     http://localhost:8080/
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

所以

https://example.com/users/daily
Run Code Online (Sandbox Code Playgroud)

在内部代理到

http://localhost:8080/users/daily
Run Code Online (Sandbox Code Playgroud)

并由 Tomcat servlet 提供服务。

服务器成功,我想将它部署三次,到 3 个不同的系统,由 URL 后缀 ( /dev, /stg, /prod)区分:

在此处输入图片说明

这意味着https://example.com/dev/users/daily将从 代理http://localhost:8080/users/daily,并将https://example.com/prod/users/dailyhttp://localhost:8082/users/daily.

我尝试了一些 ApacheRewriteRuleProxyPass规则,但找不到有效的组合。

如何在具有工作内部链接的 Apache 中进行基于后缀的内部路由?

tomcat proxy redirect apache-2.2

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

NGINX 代理传递给 NodeJS 应用程序:返回 502 错误

我正在尝试将 NGINX 设置为我的 NodeJS 应用程序的前端,该应用程序已上线127.0.0.1:3000,但我无法解决此 502 错误。NGINX 可在本地访问http://55.55.55.5/或访问http://dev.example

dev.example(文件在:/etc/nginx/sites-available 并符号链接到启用站点)

upstream up_dev.example {
    server 127.0.0.1:3000;
}

server {
    listen 0.0.0.0:80;
    server_name dev.example example;
    access_log /var/log/nginx/dev.example.log;

    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://up_dev.example/;
      proxy_redirect off;
    }
 }
Run Code Online (Sandbox Code Playgroud)

错误日志

2014/09/17 19:38:26 [错误] 1679#0:*1 connect() 失败(111:连接被拒绝),同时连接到上游,客户端:55.55.55.1,服务器:,请求:“GET / HTTP/ 1.1",上游:$

configuration nginx proxy 502

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

Nginx 负载平衡/代理到上游的路径/重写

基本上我有一个 API 农场

192.168.1.1、192.168.1.2、192.168.1.3

但是,端点具有不同的文件夹结构(我无法修改的第 3 方!)

所以基本上我想要一个像这样的 nginx 配置

upsteam api_servers{
    server 192.168.1.1/api/;
    server 192.168.1.2/myApp/api/;
    server 192.168.1.3/;
}
server{
    listen 80;
    location / {
        proxy_pass http://api_servers;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,您不能在上游服务器中拥有路径。我想我必须重写这些?我知道如何为传入的请求重写它,但不确定当它到达每个后端服务器时如何以不同的方式重写它。

提前谢谢了!!

nginx proxy reverse-proxy load-balancing linux-networking

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

使用 URL 编码 URL - apache mod-proxy (ProxyPass)

我有一个 ProxyPass 配置为达到以下目的:在我的服务器上,我启动了一个服务,该服务提供一个 Rest-API 监听端口 7777。从客户端,我希望能够像这样调用这个 API: http://example.org/servicename/PARAMETER

对此 API 的完整调用应如下所示: HTTP PUT @ http://example.org/servicename/PARAMETER(其中PARAMETER是某个字符串)。在内部,这应该转换为以下网址:http://server.ip:7777/servicename/PARAMETER

只要 PARAMETER 不是这样的(!),一切都会按预期工作:(http://parameter.org实际上我需要对其进行 URL 编码:)http%3A%2F%2Fparameter.org。总而言之,电话是http://example.org/servicename/http%3A%2F%2Fparameter.org

http://在参数混淆阿帕奇导致在回复呼叫以下错误信息:

!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /servicename/http://parameter.org was not found on this server.</p>
<hr>
<address>Apache/2.2.22 (Debian) Server at example.org Port 80</address>
</body></html>
Run Code Online (Sandbox Code Playgroud)

http%3A%2F%2Fparameter.org例如,如果我替换为test,则一切正常。http://参数中的不知何故混淆了apache。有没有办法让 apache 忽略它?

我目前对这个虚拟主机的配置如下所示:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/example
        ServerName …
Run Code Online (Sandbox Code Playgroud)

proxy virtualhost proxypass apache-2.2

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

/var/lib/nginx/proxy 从哪里来?

我有一个服务器配置为通过设置代理:

proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=backcache:8m max_size=20g inactive=7d;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
Run Code Online (Sandbox Code Playgroud)

尽管如此,当我启动 nginx 时,我最终也得到了 /var/lib/nginx/proxy。两者都开始填满,最终硬盘驱动器填满。

如果我尝试让我的 proxy_cache_path 指向 /var/lib/nginx/proxy,我会收到错误消息:

nginx: [emerg] the same path name "/var/lib/nginx/proxy" used in /etc/nginx/conf.d/proxy.conf:1 and in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)

nginx.conf 的第 62 行只是 http{} 部分的结尾,所以我认为这是在抱怨我试图覆盖的“默认”。

我不知道如何禁用这个代理配置,它似乎复制了我设置的显式配置。有没有办法覆盖/删除该默认代理配置?

nginx proxy cache

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

Nginx 连接上游 Apache:重新协商握手失败

我正在配置将用作反向代理的新 Nginx 服务器。我们有运行 Apache 的旧 Debian 服务器。在这个 apache 服务器上,只有 HTTPS 访问的站点我想隐藏在代理后面。

从代理到上游 Apache 的连接必须通过 HTTPS(服务器位于不同的位置,Apache 只允许 HTTPS 访问)。

我的问题是从 Nginx 到 Apache 的连接失败。从浏览器到上游通过 HTTPS 的正常连接没有问题。从同一代理到 Nginx 上游的连接有效。当 Nginx 尝试连接到上游 Apache 连接失败并重新协商握手失败时

来自代理 Nginx 的日志(调试级别)仅表示:

2016/04/07 15:51:08 [error] 5855#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 94.113.97.9, server: procrastination.com, request: "GET / HTTP/1.1", upstream: "https://77.240.191.234:443/", host: "procrastination.com"
Run Code Online (Sandbox Code Playgroud)

从上游 Apache 登录:

[Thu Apr 07 15:36:48 2016] [info] Initial (No.1) HTTPS request received for child 35 (server …
Run Code Online (Sandbox Code Playgroud)

nginx proxy https apache-2.2

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

https 通过仅 http 代理?

我的组织通过代理引导所有流量。作为代理设置,我们需要为 http_proxy 和 https_proxy 环境变量使用 http 代理设置。

如果我将 https_proxy 变量设置为同一代理的 https 版本,则某些使用 https_proxy 环境变量的程序将停止工作。

那么这是否意味着代理不支持https连接?在我的浏览器中正常加载的 https 网站呢?

proxy https

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