Articles of nginx

Nginx反向代理到LAMP服务器:无法login到phpmyadmin

我很新的apache,甚至更新的反向代理,但我最终安装一个服务器与nginx(作为反向代理)和Apache,以pipe理不同的技术的网站。 一个php网站(下面称为php_site)由apache处理,一个在rails网站上的ruby由nginx处理。 以后应该添加更多的网站。 一切工作正常,除了phpmyadmin。 我的问题:我可以到phpmyadminlogin页面(通过www.php_site.org/phpmyadmin/或xx.xx.xx.xxx:8080/phpmyadmin/是我的服务器外部IP),但我不设法login。我很确定我有良好的凭据,但是当我提交表单,phpmyadminlogin页面只是重新加载,而不显示错误。 我的conf: Ubuntu 16.04 PHP5.6(因为一个旧的项目需要它) phpmyadmin 4.5.4.1 mysql 5.7.17 阿帕奇/ 2.4.18 phpmyadmin安装在/usr/share/phpmyadmin/ 。 Nginx的conf(php_site): # /opt/nginx/conf/conf.d/php_site.conf server { listen 80; server_name www.php_site.org; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $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-Proto $scheme; } location /phpmyadmin { proxy_pass http://127.0.0.1:8080/phpmyadmin; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; […]

在Nginx中有没有办法logging301redirect?

在Nginx中有没有办法logging301redirect? 我已经尝试启用信息级别的日志logging,但他们似乎并没有显示。

nginx重写请求没有已知的原因

当试图使phpmyadmin在我的Nginx服务器上工作时,它会将请求https://fellowshipmedia.eu/phpmyadmin重写为https://fellowshipmedia.eu/index.php 。 我试着用'rewrite_log'和'debug'标志来读取error.log,但是日志对我来说很难理解。 我可以看到,在某个点上path的前缀被删除,但为什么? 这是nginx conf文件的一部分: server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/letsencrypt/live/fellowshipmedia.eu/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/fellowshipmedia.eu/privkey.pem; include snippets/ssl-params.conf; server_name fellowshipmedia.eu; root /usr/share/nginx/html/fellowshipmediaeu/httpsdocs/; index index.php index.html index.htm ; location / { try_files $uri $uri/ /index.php?page=$uri; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } } 这是access.log: 86.83.94.220 – – [10/Jun/2017:07:24:10 +0200] […]

ssi on nginx,使用variables和条件

我使用nginx来服务器上我的静态页面。 为了使菜单dynamic地改变相应页面上的class="active" ,我试图使用SSIvariables。 所以我在页面上有这个: <!–#set var="pageOn" value="floorCare" –> 然后再下降一点: <!–#include virtual="./includes/header.html" –> 在header.html文件里面,我有: foo: <!–# if expr="(${pageOn} = floorCare" –>class="active"<!–# endif –> 我的理解(从我今天所读到的)是,这应该工作。 相反,我得到: foo:[处理指令时发生错误] class =“active”[处理指令时发生错误] 我知道SSI本身正在工作(因为页眉/页脚包括很好,​​否则) 我错过了什么?

代理请求到两个并行的端点

有没有什么办法像nginx,mod_proxy,haproxy或类似的东西,让它代理请求并行的两个不同的Web服务器? 我有一个服务器,就像当前的活动,并且是一个“新”,我想确保“新”一个工作相同的当前“活跃”一个切换之前。 所以,代理应该发送所有的请求,然后忽略来自“新”的答复。

Nginx的接口文件

我尝试从azure blob服务angular度的应用程序,问题是,我不能用URI和正则expression式代理。 我的configuration是: location /web { proxy_pass https://blob.com/web/index.html; } location ^~ /monitor { proxy_pass https://blob2.net/angular/index.html; } location ~* \.(js|map|jpg|jpeg|png|ico)$ { proxy_pass https://blob2.net/angular; } JS文件应该来自blob2 / angular,因为它们位于那里。 但有了这个configuration我有例外“proxy_pass不能有URI部分…”,这意味着proxy_path不能有正则expression式的URI。 好吧,所以我把最后一句话改成: location ~* \.(js|map|jpg|jpeg|png|ico)$ { rewrite ^ /angular$1; proxy_pass https://blob2.net; } 但仍然不起作用。 更新更改configuration location ~* (\.(?:js|map|jpe?g|png|ico))$ { proxy_pass https://angularweb.blob.core.windows.net/angular/$1; } 但现在的文件是404。在日志中没有什么是“31.168.50.6 – – [13 / Jun / 2017:10:28:53 […]

设置Nginx + PHP来从主目录服务的PHP文件

这里是我的nginx.conf的相关部分,它不适用于位于用户的主目录中的php文件: location ~ ^/~(.+?)(/.*)?$ { alias /usr/home/$1/www$2; autoindex on; } # Serve user directories php files location ~ ^/~(.+?)(/.*\.php)$ { alias /usr/home/$1/www; try_files $2 =404; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_intercept_errors on; include fastcgi_params; fastcgi_param SCRIPT_NAME /~$1$fastcgi_script_name; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; […]

Nginx负载平衡 – 2个服务器,2个IP,1个域

我有两个不同IP的服务器。 他们都安装了NginX,我希望为一个特定的域负载均衡它们之间的stream量。 Server1 – IP-1 – 1域 Server2 – IP-2 – 丢失域名 如何为我希望自动平衡的唯一站点设置相应的nginxconfiguration? 我希望Server1始终提供服务,但是当它下降时,Server2将提供相同的域名。 我应该将哪个IP分配给我想要的服务器的URL? IP-1还是IP-2? 我需要第三台服务器作为网关吗? 提前致谢!

在任何login尝试后,wp-admin将redirect回wp-login

我不知道是否要发布到wordpress stackexchange或这里,但由于这是更多的服务器configuration,我会在这里假设。 我的问题是一个configuration问题。 这是我的设置: Docker实例在端口80上的内部docker IP地址上运行Docker实例运行nginx,它是反向代理(public-facing port 80)反向代理(public-facing)将docker实例与内部ip地址上的wordpress服务到internet 这个问题是一个相当独特的问题,因为当查看索引页面或其他页面(关于或其他页面)时,它工作得很好。 只有当login到wordpress这个问题发生。 我转到https://example.com/wp-admin并login 它会在login后redirect到https://example.com/wp-login.php (正确或不正确的信息,没有消息) 从那里它一次又一次地循环,每次我尝试login,没有迹象表明login已被处理。 没有“密码不正确”,只显示login页面。 这不是浏览器停止(无限循环)的意义上的redirect循环,它不会正确地处理login。 换句话说,我可以查看页面并提交login信息,但是它不会处理它。 我尝试禁用所有插件,甚至创build一个全新的安装没有插件 – 我有同样的问题。 它使我相信这是我的nginxconfiguration的一个问题,或者它是wordpress本身 – 我不确定在这一点上。 我正在使用此设置,以便我可以轻松地将新网站添加到服务器(这是专用服务器),如果需要的话,可以重新启动单个站点,而不必closures使用反向代理托pipe的所有站点。 MySQL能够被访问得很好,因为post和页面加载没问题。 只有当试图login这个问题发生。 我的反向代理configuration: server { listen 80; listen [::]:80; server_name _; return 444; } server { listen 80; listen [::]:80; server_name example.com; location / { proxy_read_timeout 90; proxy_connect_timeout 90; proxy_redirect off; […]

代理之后的Logstash不起作用

我试图在代理之后启动几个Logstash实例。 我正在使用nginx,但HAProxy也是一个选项。 worker_processes 4; events { worker_connections 1024; } http { upstream streams { server logstash_ip:5044; } server { listen 80; location / { rewrite ^/(.*) /$1 break; proxy_ignore_client_abort on; proxy_pass http://streams; 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; } } } logstash_ip是一个别名,它是可以parsing的。 问题是,当我将一些日志直接推送到logstash时 – 一切正常。 当我通过Nginx推送日志时,它失败了: 使用端口浏览Nginx会导致502网关错误 Logstash日志 发布事件(重试)时发生错误:lumberjack协议错误