Articles of 反向代理

如何使用nginx作为具有多个IP和SSL的反向代理?

我想设置nginx反向代理与多个域名和一个IP为他们每个人使用不同的SSL证书。 我运行Ubuntu作为安装在KVM / Qemu虚拟机上的操作系统。 据我了解nginx,它应该能够通过一个IP服务于一个域(和属于它的子域)。 但我不能让它运行… 这是我的nginxconfiguration: 在/ etc / nginx的/启用的站点 – / my_first_domain server { listen xxx84:80; # this is a public ip server_name firstdomain.com; access_log /var/log/nginx/access.log proxy; # I made my own logformat error_log /var/log/nginx/error.log; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Host $host; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; location / { […]

在NGINX负载均衡器中保留响应头

我以这种方式将NGINX设置为两台Domino服务器的负载平衡器: http { upstream www.mydomain.com { server 1.1.1.1; server 2.2.2.2 backup; } server { listen 80; server_name www.mydomain.com; location / { proxy_pass http://www.mydomain.com; } } } 如果我直接访问Domino服务器,响应头是这样的: HTTP/1.1 200 OK Server: Lotus-Domino Date: Mon, 23 Dec 2013 12:19:36 GMT Last-Modified: Fri, 20 Dec 2013 08:16:27 GMT Content-Type: text/html; charset=US-ASCII Content-Length: 12713 Cache-control: private ETag: W/"MTAtODEwRC1DMjI1N0MzRDAwN0M3NTBCLUMyMjU3QzQ3MDAyRDczMzktMC1DTj1QYW51IEhhYXJhbW8vTz1BQUQ=" […]

Nginx WebSocket反向代理保持返回200而不是101

我目前正在尝试在我的个人服务器上运行hack.chat 。 长话短说,它由两台服务器组成。 首先是一个简单的httpd服务器提供JavaScript和CSS。 第二个聊天系统是javascript连接到websocket的一个node.js服务器。 这里出现了问题。 我希望使用端口80,在单个IP上使用不同的域名,在Nginx中使用单独的服务器块。 我跟着Nginx的websocket文件,但这是行不通的。 当websocket尝试连接时,它总是得到200返回代码,而如果我理解的很好,它应该得到101(切换协议)。 我的Nginx版本是1.8.0,我的服务器在linux 4.0.5下运行在gentoo上 下面是相关的nginx conf文件的转储: nginx.conf: user nginx nginx; worker_processes 1; error_log /var/log/nginx/error_log info; events { worker_connections 1024; use epoll; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr – $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$gzip_ratio"'; client_header_timeout 10m; client_body_timeout 10m; send_timeout […]

Nginx:如何完全禁用请求身体缓冲

我试图在我的Ubuntu盒子上安装Madsonic ,并让Nginx运行在它的前面。 问题是,当我尝试通过Web界面上传东西时,我总是收到这个警告: 31115#0: *14 a client request body is buffered to a temporary file 这也解释了为什么上传窗口上的进度条不起作用。 这是我的相关Nginxconfiguration: # proxy the madsonic server here location / { proxy_pass https://madsonic-server/; proxy_redirect off; proxy_buffering off; proxy_request_buffering off; allow all; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Proto $scheme; client_body_buffer_size 0; […]

Nginx反向代理:不设置expires头

我有我的静态资产configuration为 location @upstream { proxy_pass http://localhost:82; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { try_files $uri @upstream; access_log off; expires max; add_header Cache-Control public; } expires max不受尊重。 我认为它尊重传入的服务器头。 如何修改这个设置expires头?

如何使用基本身份validation来保护在Apache2虚拟主机中反向代理的Tomcat web应用程序?

我很难弄清楚如何添加基本的HTTP身份validation来密码保护生产Web服务器上运行的开发testing环境。 主站点和testing环境都是使用AJP代理服务Tomcat webapps的单独实例的虚拟主机。 我们需要阻止公众访问testing环境,而不必在Tomcat环境中对web.xml进行更改,而使用Apache而不是Tomcat来实现保护。 然而,虚拟主机中的ProxyPass和ProxyPassReverse指令似乎覆盖了使用.htaccess或者放在<Directory>控制块中的任何东西,而似乎我不能在<VirtualHost>控制的主体中使用像AuthType这样的指令阻止旁边。 我对Apache(或Tomcat)并不是非常有经验,也不确定哪些指令可以应用于何处,哪些可能会覆盖其他指令。 由于需要在生产服务器上进行更改,因此我不敢轻易尝试,以免造成停机。 httpd.conf本身非常简单: LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so LoadFile /usr/lib/libxml2.so 相关的虚拟主机文件/ etc / apache2 / sites-available / dev443如下所示: <IfModule mod_ssl.c> <VirtualHost dev.mydomain.com:80443> ServerName dev.mydomain.com:80443 ServerAdmin webmaster@localhost DocumentRoot /var/www/dev ProxyPass / ajp://127.0.0.1:8010/ ProxyPassReverse / ajp://127.0.0.1:8010/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/dev/> Options Indexes FollowSymLinks MultiViews AllowOverride All […]

如何从现有SSL环境variables创build自定义标题?

好吧,我已经花了整整一天的时间 我正在使用mod_ssl的Apache我试图采取一个现有的环境头,“%{SSL_CLIENT_S_DN_CN} s”,它看起来像“姓氏名Mi用户名”,并设置一个名为USERNAME的新标题,并设置等于只是用户名最后一个空格和string结尾之间的字符) 然后,我会反向代理该头到后端主机,将使用它来识别用户。 我尝试了很多不同的东西。 我不知道如果问题是我不明白Perl的正则expression式,或者如果我不明白的语法,或者我不把它放在正确的地方,或所有三个。 这是我尝试的一个例子: SetEnvIf SSL_CLIENT_S_DN_CN (.*\ )(.*) newhostname=$2 RequestHeader set HOSTNAME "%{newhostname}e" 我真正想要的是一个新的标题主机名等于DN_CN环境variables中的最后一个非空白字符。

nginx proxy_pass重写响应头的位置

这个nginx实例的目的是让GitLab和OpenWRT Luci通过一个反向代理redirect。 它已经为其他几个网站工作,所有这些网站都有一个基本的url,似乎对付这个问题。 本例中的GitLab在端口9000上的本地服务器上。 nginx网站在8080端口上。 OpenWRT具有完全相同的问题,但使用/ cgi-bin / luci / 示例位置的相关nginxconfiguration是; location /gitlab/ { proxy_pass http://127.0.0.1:9000/; proxy_redirect default; } 请注意,结果是相同的和没有一个结尾的斜线。 有一些头代理configuration选项被应用到这个位置。 # Timeout if the real server is dead proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; # Basic Proxy Config proxy_set_header Host $host:$server_port; proxy_set_header Origin $scheme://$host:$server_port; proxy_set_header Connection $http_connection; proxy_set_header Cookie $http_cookie; proxy_set_header Upgrade $http_upgrade; […]

除了HTML页面之外,NGINX都给出了404错误

我将nginx设置为泊坞窗容器中的反向代理,以链接到容器外部的站点。 我有一个虚拟主机configuration设置如下(我尝试添加^家庭助理的位置之前): server { # simple reverse-proxy listen 80; location / { proxy_pass http://192.168.1.99:6789; } location ^~ /home-assistant { proxy_pass http://192.168.1.99:8123/; } location /calibre-web/ { proxy_pass http://192.168.1.99:8181/; } } 对于家庭助理和口径网站,页面加载,但我得到404错误的所有其他项目(图像,CSS等)。 如果我尝试点击应用程序中的链接,它将链接到192.168.1.99 /文件,而不是192.168.1.99 / site-folder /文件 。 以下是日志中的一些logging(注意一个200响应和其他404响应)。 我在这里做错了什么? 先谢谢您的帮助。 192.168.1.6 – randy [15/Aug/2016:03:15:42 +0000] "GET /frontend/panels/dev-template-0a099d4589636ed3038a3e9f020468a7.html HTTP/1.1" 404 199 "http://192.168.1.99/home-assistant/" "Mozilla/5.0 (X11; CrOS x86_64 8350.60.0) […]

Apache 2.2禁用位置上的反向代理

我在FreeBSD上运行Apache 2.2。 到最近我一直在看切诺基+ uWSGI的一些Django / Python。 我想保留在前面的Apache 2.2(端口80回复)和代理连接到在同一台机器上运行的切诺基服务器。 我的问题是,我有一些遗留的东西,我的url上的几个目录位置。 我想/去我的切诺基(反向代理),但保持Apache的/ dir1 /和/ dir2 /。 我得到了反向代理与mod_proxy正常工作。 ProxyRequests Off <Location /> ProxyPass http://127.0.0.1:8080/ ProxyPassReverse http://127.0.0.1:8080/ </Location> 切诺基在localhost的端口8080运行。 问题是,我不知道如何closures/ dir1 /和/ dir2 /的反向代理,以便Apache将传入请求处理到目录。 是否可以为/ dir1 /和/ dir2 /添加位置指令来告诉Apache不要反向代理目录?