Articles of proxypass

nginx reverse_proxy与多个服务器/位置块和预渲染

我有一个Nginx代理的特定需求 我在主urlnew.example.com下有一个全新的JS应用程序(+ nginx),以及一个运行在不同url上的旧应用程序old.example.com 我需要为我的新应用程序处理search引擎的预渲染(我使用prerender nginx官方脚本作为基础)。 旧的应用程序并不需要预渲染(现在它已经成为我的预渲染器) 当用户inputwww.example.com时,他碰到我需要的nginx代理 代理/admin到old.example.com/admin 将所有机器人请求代理给预渲染器 默认代理到new.example.com 为了使事情更简单,我有代表每个应用程序@地点块(但也许这是不相容的,请告诉我) location @newapp { proxy_pass http://new.example.com:8080; } location @oldapp { proxy_pass http://old.example.com:8080; } 现在,当我的新应用程序正在开发中时,我希望/adminurlredirect到我的旧应用程序。 我在网上find了一个使用try_files和maintenance.html文件的技巧 location /admin { try_files /maintenance.html @oldapp; } 现在事情也变得严重 – 我的新应用程序需要预渲染 – 我的旧应用程序不需要预渲染,并用作当需要元素的后备 – 现在我没有prerenderer应用程序(我将安装/设置prerenderer。后来)所以我使用我的旧应用程序作为bot引擎的预渲染器 location @prerenderer { try_files /maintenance.html @oldapp # will later be changes to prerenderer.io } # in […]

Nginx代理传递显示数字,而不是url

您好我试图使用代理传递谷歌analytics.js所以它可以存储在本地,并让它浏览器caching。 代理程序通行证,但是代理程序要求的url是https://[2607:f8b0:4006:800::200e]:443/analytics.js?v=1505856563 它应该是https://www.google-analytics.com/analytics.js?v=1505856563 这里是nginx.conf,在底部find代理通行证 user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip […]

带查询参数修改的nginx反向代理

我有一个在nginx后面不能识别SSL的应用程序,因此我需要执行以下操作 http://example.com/f1/f2/page?next_page=http%3A//example.com/f3/new_page 必须改变 https://example.com/f1/f2/page?next_page=https%3A//example.com/f3/new_page 所以有两件事要做,改变我所能做到的scheme,并且改变我已经有所成就的url参数,但是它并不完全工作。 我发现了一个页面,做了我想做的,但它不适合我: https : //blog.imaginea.com/modifying-query-parameters-nginx-in-reverse-proxy-mode/ 我的nginxconfiguration的相关部分: server { listen 443 ssl; server_name example.com; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_certificate /path/to/bundle.crt; ssl_certificate_key /path/to/bundle.key; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; underscores_in_headers on; rewrite_log on; location / { if ($args ~* (.*)(next_page=http%3A)(.*)) { set $args $1next_page=https%3A$3; rewrite ^(.*)$ $1; } proxy_pass http://127.0.0.1:80; proxy_redirect http:// https://; […]

代理将HTTP传递给Apache上的HTTP(2个服务器,1个站点)

这是我的第一篇文章,是的,在这篇文章之前我已经阅读了很多其他的话题,我也尝试了很多次。 我的情况如下,我有2个公司的Apache服务器,networking请求到达路由器,它转向服务器1(Centos 6.5),服务器1redirect到服务器2(7)的一些链接。 像图像: https://imgur.com/GeEPTRf 我有一个服务器上安装了SSL的网站,我需要configurationWeb请求通过服务器1并redirect到它,但我不能。 目前我的configuration如下: 虚拟主机服务器1: ServerName www.relici.org.br ServerAlias ​​relici.org.br * .relici.org.br SSLProxyEngine On <Location /> ProxyPass https://www.relici.org.br/ # (proxy for server 2) ProxyPassReverse https://www.relici.org.br/ </ Location> 服务器2上的虚拟主机: ServerName www.relici.org.br DocumentRoot /home/www/sites/relici/2_3 SSLEngine On SSLCertificateFile /etc/letsencrypt/live/www.relici.org.br/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.relici.org.br/privkey.pem SSLProxyEngine on <Directory "/home/www/sites/relici/2_3"> Options FollowSymLinks Includes AllowOverride None Allow from all Order allow, deny […]

PHP会话没有设置与特定的互联网连接

我有一个特殊的问题,关于从特定的服务提供商的互联网连接的PHP会话迷路了。 我有PHP会话设置保存处理程序,并将会话值存储在数据库中。 include_once('class.sess.php'); $session = new Session; session_set_save_handler ( array(&$session, "open"), array(&$session, "close"), array(&$session, "read"), array(&$session, "write"), array(&$session, "destroy"), array(&$session, "gc") ); session_name("testme"); session_start(); ini_set('session.cache_limiter','private'); $permission="0"; if(isset($_SESSION['gateway'])) { // 除了4G连接提供商之外,所有连接提供商都能正常工作。 当我使用热点或USB共享login到一个页面时,它被redirect回login页面。 会话没有得到设置,如在铬开发工具中看到的。应用程序 – cookies。 我正在使用https链接login。 Web服务器是Apache / 2.4.18(Ubuntu)。 我search了很多,这里是一个几乎到现在我正在经历的链接。 https://www.drupal.org/node/1222276 这似乎是ISP的代理问题。 看起来像这样可以用Apache conf纠正。 但不知道如何? 我怎样才能解决这个问题? 完全困惑?

使用server_name将Nginxconfiguration为具有上游SSL的反向代理

使用Nginx反向代理时遇到了麻烦。 我有一个私人networking上提供以下网站的服务器: a.example.com:10.32.58.01(内部DNSparsing) b.other.com:10.32.58.01(内部DNSparsing) 我创build了一个Nginx反向代理,可以访问这两个网站。 这个反向代理有IP 52.00.00.01(假一个)。 公共DNSparsing是: a.example.com:52.00.00.01 b.other.com:52.00.00.01 Nginx服务器/ etc / hosts文件包含以下parsing: 10.32.58.01 a.example.com b.other.com 问题是我的两个域有不同的SSL证书,我想我的反向代理validationSSL证书。 这是我的Nginx反向代理configuration失败: server { listen 80; server_name a.example.com; server_name b.other.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name a.example.com; ssl_session_cache shared:SSL:100m; ssl_session_timeout 180m; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:!DSS'; ssl_session_tickets off; ssl_certificate ssl/chained.example.com.crt; ssl_certificate_key ssl/example.com.key; location / { proxy_pass […]

将VirtualHostredirect到内部IP地址并使用密码进行保护

我在家里的networking上运行一个服务器,可以从外面使用。 我的家庭networking中还有另外一台设备,它提供了一个相当不安全和不可靠的networking服务器,我仍然希望从外部访问,但采用更安全的方式。 我可以在我的路由器上为这个特定的设备build立一个端口转发规则,但我不喜欢这个想法。 所以我认为有可能通过使我的web服务器以安全的方式从外部redirect到这个内部IP来解决这个问题。 我目前的虚拟主机configuration包含这个片段: <VirtualHost *:443> ServerName my-server.tld ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log ProxyPass / http://192.168.2.20/ ProxyPassReverse / http://192.168.2.20/ </VirtualHost> 但它不起作用。 我还想通过添加身份validation来使其更安全,因为可以使用.htaccess为目录提供身份validation。 这怎么能实现? 还是有更好的方法来安全地将设备从内部功课暴露给外部?

nginx proxy_pass更改url

我有以下nginxconfiguration: location /a/b/ { proxy_pass http://website1/abc; } location /a/c/ { proxy_pass http://website2/xyz; } 位置/a/b工作正常,在这种情况下URL不会改变,但是当我加载/a/c位置时,整个页面被redirect到http://website2/xyz 。 我不想要这个,我只是想加载/a/c下的http://website2/xyz的内容。 是否有任何想法可能是背后的原因/a/b proxy_pass工作correclty,同时/a/c完全redirect?

在Apache中寻找相当于ProxyPassReverseMatch来修复丢失的尾随正斜杠问题

我有两个Web服务器,www.example.com和www.userdir.com。 我试图使www.example.com作为前端代理服务器来处理http://www.example.com/~username格式的请求,例如 http://www.example.com/~john/ 以便它发送一个内部请求 http://www.userdir.com/~john/ 到www.userdir.com。 我可以在Apache中实现这一点 ProxyPass /〜john http://www.userdir.com/~john ProxyPassReverse /〜约翰http://www.userdir.com/~john ProxyPassReverse是必要的,因为没有像http://www.example.com/~john这样的请求而没有尾随的正斜杠将被redirect为http://www.userdir.com/~john/ ,我希望我的用户留在example.com空间。 现在,我的问题是我有很多的用户,我不能在httpd.conf中列出所有这些用户名。 所以,我用 ProxyPassMatch ^(/〜。*)$ http://www.userdir.com$1 但在Apache中没有ProxyPassReverseMatch这样的事情。 没有它,每当url中的尾部正斜杠丢失,就会被引导到www.userdir.com,这不是我想要的。 我也尝试了以下内容来添加尾随的正斜杠 RewriteCond%{REQUEST_URI} ^ /〜[^。/] * $ RewriteRule ^ /(。*)$ http://www.userdir.com/$1/ [P] 但是它会渲染一个破碎的图像和CSS的页面,因为它们链接到http://www.example.com/images/image.gif而它应该是http://www.example.com/~john/images /image.gif 。 我一直在Google上search很长一段时间,但仍然找不到一个好的解决scheme。 如果有人能够对这个问题有所了解,我们将会非常感激。 谢谢!

使用Apache ProxyPass将新站点上的URL转发到旧Web服务器

我们目前正在将我们的网站迁移到CMS,并且正在转移到另一台服务器。 旧服务器上有一些代码,我们不想移动到新的服务器上。 我们希望url是相同的,所以我们一直在看(现在正在使用)ProxyPass。 旧服务器实际上是将URL重新映射到公共和内部内容。 旧服务器上的<Proxy>指令仍然被注释掉,并且工作正常。 我已经尝试将以下几个地方放在一个虚拟主机指令之内,在它之外等,我没有错误启动apache,但它永远不会工作。 ProxyRequests On Order allow,deny Allow from all ProxyVia On ProxyPreserveHost On ProxyPass /tester/ http://oldserver.companyname.com/app1/ ProxyPassReverse /tester/ http://oldserver.companyname.com/app1/ 我已经尝试过几个例子,比这更简单了,等等。 Apache似乎忽略了tester ,并将其发送到CMS,然后返回404。我们希望testing人员掩盖旧的URL,这是我们目前在其他计算机上执行的操作。 这个特定的虚拟主机确实有一些重写规则,我也试过在之前或之后放置这些规则。 这些模块在httpd.conf中被加载。 目前运行的Apache 2.2。 现在 – 没有任何反应。 没有错误,没有日志(我看到)等等。这就像规则实际上并不存在。 有一件事我注意到了 – 它在我们的其他虚拟主机指令中工作正常。 唯一的区别是另一个是小得多,并不包含一些重写Wordpress的规则。 这里是我的VirtualHost的一个例子 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html/wordpress ServerName wptest ServerAlias wptest.site.com.local ErrorLog /var/log/httpd/wordpress-error-log CustomLog /var/log/httpd/wordpress-access-log common ProxyPass […]