标签: reverse-proxy

通过正向代理反向代理的好方法

我有一个应用程序使用 HTTP 连接到服务器,但不支持使用 HTTP 代理,我必须使用 HTTP 代理才能访问服务器。

我想设置一个可以通过常规代理服务器的反向代理服务(它在 Linux 服务器上)。

所以:

App --> Reverse Proxy ----------> Forward Proxy -------------> Server
|====Localhost=======|   Net      |=Somewhere=|     Net   |=Somewhere Else=|
Run Code Online (Sandbox Code Playgroud)

我看过几个轻量级反向代理,但它们不支持通过代理服务器转发。我不想运行像apache或squid这样的重磅东西,但如果它们是唯一可以工作的东西,它们就会做。(虽然来自 apaches 文档,但它看起来也不行。)

有什么建议?

http proxy reverse-proxy

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

如何避免 Apache2 反向代理配置中出现“已被其他工作人员使用”警告?

我添加了与 ProxyPass 和 ProxyPassReverse 条目匹配的服务器,但我在启动时收到“已被其他工作人员使用”[警告] 消息。

我有一个对我来说足够好的建议解决方案,因为它似乎已经清除了消息并且几乎让我忘记了这个问题。此解决方案是在配置文件中以大小写相反的顺序放置条目。

我认为真正的问题与表达式匹配有关,因为如果在“Videos2”之前列出“Videos”,则会出现警告。一旦我撤销了这些条目,警告就停止了。

configuration reverse-proxy apache-2.2

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

nginx 可以作为不接受明文登录的后端服务器的邮件代理吗?

Nginx 可以作为不接受明文登录的后端服务器的邮件代理吗?

最好我想知道要包含什么指令,以便它调用STARTTLS/ STLS,但通过IMAPS或 进行通信POP3S就足够了。

nginx.conf 的相关(?)部分

mail {
    auth_http           localhost:80/mailproxy/auth.php;
    proxy               on; 
    ssl_prefer_server_ciphers   on;
    ssl_protocols           TLSv1 SSLv3;
    ssl_ciphers         HIGH:!ADH:!MD5:@STRENGTH;
    ssl_session_cache       shared:TLSSL:16m;
    ssl_session_timeout     10m;
    ssl_certificate         /etc/ssl/private/hostname.crt;
    ssl_certificate_key     /etc/ssl/private/hostname.key;
    imap_capabilities  "IMAP4rev1" "UIDPLUS"; 
    server {
        protocol    imap;
        listen      143;
        starttls    on;
    }
    server {
        protocol    imap;
        listen      993;
        ssl     on;
    }
    pop3_capabilities  "TOP" "USER";
    server {
        protocol    pop3;
        listen      110;
        starttls    on;
        pop3_auth   plain;
    }
    server {
        protocol    pop3;
        listen      995;
        ssl     on;
        pop3_auth …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy

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

如何将子域指向不同的本地 IP

我的问题与How to point a subdomain to local server with dynamic IP 相同。不同之处在于我确实有来自 ISP 的静态 IP,我认为我不需要使用 DynDNS,对吗?那我可以用什么代替呢?

我的目标是将每个子域指向不同的 Web 服务器,如下所示:
mydomain.com --> 192.168.1.100(主 Web 服务器)
sub1.mydomain.com --> 192.168.1.101(Web 服务器 1)
sub2.mydomain.com - -> 192.168.1.102(网络服务器 2)

我曾尝试按照此处的说明使用 Apache 的代理模块,但未成功。当我通过浏览器访问 sub1.mydomain.com 时,它总是导致 mydomain.com。
我可以通过这种方法做到这一点吗?如果没有,请告诉我另一种方式。

我使用 Ubuntu 服务器 12.04

[已解决]
解决方案

  1. 设置 DNS

A记录指向公网IP:
1@public.ip 2www
public.ip

CNAME记录指向子域:
1 sub1 mydomain.com
2 sub2 mydomain.com

  1. 设置阿帕奇。

添加sub1sub2/etc/apache2/sites-available

子1:

<VirtualHost *:80>    
        ServerName sub1.mydomain.com    
        <Proxy *>
                Order deny,allow …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy subdomain apache-2.2 ubuntu-12.04

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

Nginx 作为反向代理:如何正确配置网关超时?

我们已将Nginx配置为 Apache 服务器群的反向代理,但我遇到了网关超时问题。

我们以人类可读形式的目标是:“在一秒钟内发送请求,但如果确实需要更长的时间,则无论如何都要交付”,对我来说,这意味着“尝试上游的第一个 Apache 服务器最多 500 毫秒。如果我们超时/一个错误,尝试下一个,依此类推,直到我们最终成功。”

现在我们的相关配置是这样的:

location @proxy {
    proxy_pass         http://apache$request_uri;

    proxy_connect_timeout 1s;
    proxy_read_timeout 2s;

}

[...]

upstream apache {
 server 127.0.0.1:8001          max_fails=1 fail_timeout=10s;
 server 10.1.x.x:8001           max_fails=1 fail_timeout=10s backup;
 server 10.1.x.x:8001           max_fails=1 fail_timeout=10s backup;
 server 10.1.x.x:8001           max_fails=1 fail_timeout=10s backup;
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是 nginx 似乎将其误解为“尝试在一秒钟内从整个上游集群获得响应,如果我们不这样做,则会产生 50X 错误 - 对尝试任何上游服务器的时间没有任何限制”,其中显然不是我们的想法。

有什么办法可以让 nginx 做我们想做的事吗?

nginx timeout reverse-proxy apache-2.2

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

具有许多 IP 或 SSL 证书的 Azure VM

我希望将我们的托管环境移动到 Azure,并通过这样做创建了一个沙坑 VM 来解决问题。我们在 IIS 中托管了大约 300-400 个网站,其中大约 2% 的网站拥有唯一的非通配符证书,在我们当前的设置中,所有这些证书都需要唯一的公共 IP。

您能否获得指向 1 个 VM/端点的 IP 范围?或者是否可以创建 SSL 代理?

我从未创建过 SSL 代理,但喜欢它的想法。如果这是最好的选择,我需要在此提供有关如何进行的建议。

抱歉,如果已经回答了!如果我的问题措辞不够雄辩,也很抱歉。

reverse-proxy ssl-certificate azure

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

Squid 代理不缓存任何东西

鱿鱼.conf:

http_access allow all

# Squid normally listens to port 3128
http_port 3128 accel defaultsite=localhost no-vhost

cache_peer localhost parent 80 0 no-query originserver name=myAccel
cache_peer_access myAccel allow all

# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /usr/local/var/cache/squid 100 16 256

# Leave coredumps in the first cache dir
coredump_dir /usr/local/var/cache/squid
Run Code Online (Sandbox Code Playgroud)

Squid 3.2.9,通过 Homebrew 安装在 OSX 上

localhost: ~ $ squid -v
Squid Cache: Version 3.2.9
configure options:  '--disable-debug' '--disable-dependency-tracking' '--prefix=/usr/local/Cellar/squid/3.2.9' '--localstatedir=/usr/local/var' 'CC=cc' 'CXX=c++' 'PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig' …
Run Code Online (Sandbox Code Playgroud)

proxy cache squid reverse-proxy

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

从 nginx 代理的机器设置 cookie 的问题

对于我的一个项目,我需要连接一长串机器,这些机器实质上是相互代理 HTTP 请求。它是这样的:

网络客户端 - A - B/C - D

当浏览器发出请求时,它首先通过一个位于用户本地机器上的薄 PHP 代理层,其目的是解决跨域请求等复杂问题。它代理到机器 B - 只是一个 nginx 实例,它将 URL 和代理重写到 C。C 在代理到 D 之前进行一些必要的修改,获取响应,并将其返回给 Web 客户端。D 是一个无法触及的远程服务 API。

我在机器 C 上设置会话 cookie 时遇到问题,一直到原始请求。尽管可以设置 cookie,但是当有新请求时,它在 Chrome 网络检查器中不可见,并且当我尝试从显然不存在的 cookie 中获取值时,节点 C 返回空指针异常。

我想,这归结为调整 nginx 代理请求的方式。

nginx proxy reverse-proxy cookies

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

使用 Nginx 作为反向代理的 Tomcat 应用程序 (JIRA) 的基本身份验证

我有几个运行 Atlassian Tomcat 应用程序的子域(jira.example.com、confluence.example.com、stash.example.com),我想知道是否可以basic_auth使用.htpasswd.

Nginx 在没有 basic_auth 指令的情况下工作正常,但是如果我尝试在nginx.conf...

user              nginx;
worker_processes  1;

error_log         /var/log/nginx/error.log;
pid               /var/run/nginx.pid;

events {
    worker_connections  1024;
}


http {

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] $request '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/conf.d/*.conf;

    # Our self-signed cert
    ssl_certificate     /etc/ssl/certs/fissl.crt;
    ssl_certificate_key /etc/ssl/private/fissl.key;

    # Password …
Run Code Online (Sandbox Code Playgroud)

tomcat nginx reverse-proxy confluence jira

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

HTTP反向代理内部重定向

对我来说,这似乎是一个简单的场景:

  • 客户端向服务器X( http://proxy.example.com)发出反向代理请求
  • 服务器X将请求转发到后端服务器Y( http://internal1.example.com:8000)
  • 后端服务器Y响应3xx重定向到另一个后端服务器Z( http://internal2.example.com:8000)
  • 代理服务器X 拦截3xx 重定向并再次向后端服务器发出请求Z它不会将 3xx 重定向返回给客户端。
  • 代理服务器X用来自后端服务器的重定向请求的结果响应客户端Z

我需要这个,因为有些客户端似乎不处理重定向(尤其是在执行 PUT 时),所以我希望重定向在代理服务器上以不可见的方式在内部发生。(我实际上在后端运行 WebDAV 服务器,所以我的客户端是 Cyber​​duck、Nautilus、OSX Finder 等)。

我已经搜索了大量的现有答案,但没有运气(这个问题基本上是我想要的,但没有令人满意的答案,并且它已经一年不活动了。希望从那时起事情就发生了变化)。

如果可能,我想为此使用现有的解决方案。Apache/Nginx 有可能吗?

reverse-proxy redirect

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