这与几年前我问过的一个老问题有关 ,对此我从来没有得到正确的答案。 我只是build立一个新的服务器(Ubuntu 16.04,Nginx 1.10,PHP 7),并回到这个。 我有一个Question2Answer实例运行在一个子文件夹中,其他PHP代码从根目录运行。 对于根的东西,我有这在我的服务器块: location / { try_files $uri $uri/ /index.php?$request_uri; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } 对Q2A来说,我在旧服务器上所拥有的是: location /qa/ { if (!-e $request_filename) { rewrite ^/qa/(.*)$ /qa/index.php?qa-rewrite=$1 last; } } 这是行得通的,但我不认为这是应该如何做(如果是邪恶等)。 我确定只能使用try_files 。 我试过这个: location /qa/ { try_files $uri $uri/ /qa/index.php?qa-rewrite=$uri&$args; } 但是它不起作用,因为/qa/在qa-rewrite传递。 它应该只是通过path后的一切。 有没有办法从$urivariables中删除/qa/ ? […]
伴随状态码的HTTP响应的短语不固定。 而不是返回200 OK是合法的返回200 Everything fine 。 nginx为一些知名的状态代码提供了预定义的原因短语,但不是全部。 例如,截至目前,nginx还不知道RFC 6585状态码511 Network Authentication Required 。 我如何设置/更改nginx状态码的原因?
我不断收到这个错误,当我在一个LEMP设置Nginx的1.10 / PHP 7,我以为这是因为PHP 7,现在我设置一个新的服务器与Nginx 1.4.6 / PHP 5.5.9 2016/06/19 15:45:18 [error] 4094#0: *1 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected end of file in /var/www/www.example.com/public/wp-content/themes/techs/functions.php on line 141" while reading response header from upstream, client: 10.0.0.11, server: www.example.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "example.com" 现在是造成这个错误的文件是在这里,我注意到,行是空的最后一行,我试图删除该行,但不会被删除。 任何人都可以指出是什么导致这个错误? nano […]
寻找扩展Eclipse Che (云IDE),我正在实施一个Che Farm 。 总之,一组反向代理背后的Eclipse Che实例。 好的,我正在使用Nginx在使用Amazon Linux AMI的EC2实例上实现反向代理,但是我发现这个问题:Eclipse Che需要为客户端打开端口8080,其工作空间的范围是32768-65535(更多信息,请点击这里 ) 。 所以,我修改了nginx.conf文件,如下所示: server { listen 32768; listen 32769; listen 32770; listen 32771; […] listen 65534; listen 65535; server_name http://eclipse.company.cxx; location / { proxy_pass http://eclipse.company.local:$server_port; } } 重新启动nginx之后,我收到了这个消息: $ sudo service nginx restart nginx: [emerg] socket() 0.0.0.0:33786 failed (24: Too many open files) nginx: […]
我读这篇文章,但我不能让我的情况下工作https://stackoverflow.com/questions/3334023/configure-multiple-sites-with-varnish 这是我的问题 我有2个域名:mysite1.com和mysite2.com 这是我在default.vcl中的configuration backend default { .host = "127.0.0.1"; .port = "8080"; } backend mysite2 { .host = "127.0.0.1"; .port = "8080"; } sub vcl_recv { if (req.http.host == "mysite1.com" || req.http.host == "www.mysite1.com") { set req.backend = default; } elsif (req.http.host == "mysite2.com" || req.http.host == "www.mysite2.com") { set req.backend = mysite2; } […]
我试图在Nginx 1.10.1的FreeBSD 10.3服务器上安装Phpmyadmin,但它不起作用。 PHP版本是7。 这是一个WPMU服务器,一切正在工作,除了Phpmyadmin给了我一个404。 这是我在Nginx上的Phpmyadmin块 # PHPMYADMIN location /phpmyadmin { root /usr/local/www/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/local/www/; fastcgi_pass unix:/var/run/php-fpm.sock; # fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /usr/local/etc/nginx/fastcgi_params; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/local/www/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } […]
我在本地安装了一个nginx webserver。 Web根目录位于/ var / www下 现在我有一个如下所示的项目:/ var / www / test-project / src / tests src文件夹是包含index.php文件的文件夹。 现在,我想要在浏览器中inputhttps://localhost/test-project时运行该网站。 目前这是我的configuration: server { listen 443; server_name localhost; root /var/www/; access_log /usr/local/etc/nginx/logs/default-ssl.access.log main; ssl on; ssl_certificate ssl/localhost.crt; ssl_certificate_key ssl/localhost.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { try_files $uri $uri/ /index.php?$args; include /usr/local/etc/nginx/conf.d/php-fpm; […]
好的,所以我有一个虚拟机http://10.0.8.247:80/phppgadmin/运行phppgadmin。 我想在admin.example.com上公开phppgadmin到互联网,所以我做了 server { listen 80; server_name admin.example.com; location / { proxy_pass http://10.0.8.247:80/; } } 这和预期的一样。 去admin.example.com/phppgadmin将请求代理到10.0.8.247,我得到我想要的响应。 现在,我想要改变一点:在admin.example.com/postgres上有相同的回应。 所以我试了 server { listen 80; server_name admin.example.com; location /postgres/ { proxy_pass http://10.0.8.247:80/phppgadmin/; } } 但是这一直让我失望。 浏览器表明它试图连接到10.0.8.247,这自然不会工作,因为我不直接将虚拟机公开到互联网。 任何人都有提示? 在此先感谢,体育 ====================================== 解决scheme浮现(感谢lot,cnst!) server { listen 80; server_name admin.example.com; location /postgres/ { proxy_pass http://10.0.8.247:80/phppgadmin/; proxy_redirect default; } } 像魅力一样工作。 另请注意 […]
你能请别人指导我吗? 不pipestring是在/api/(variable string)后面,我需要的都应该反映在我的proxy_passvariables上 location /api/.*{ proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Cache-Control public; **proxy_pass http://10.0.1.98:8080/latilla/.***; proxy_read_timeout 90; proxy_intercept_errors on; error_page 404 /; }
我有一个“单页”的Web应用程序,需要客户端和服务器之间的双向通信。 该应用程序最初devise为依赖于WebSocket,但已被修改为使用SockJS,禁用WebSocket支持。 使用SockJS库的客户倾向于使用“XHRstream”作为双向通信的手段。 服务器是一个Java Web应用程序,使用Spring托pipe在Tomcat中的SockJS服务器(来自Spring的WebSocket模块)实现。 NGINX被用作Tomcat的反向代理。 NGINX的默认configuration是启用proxy_buffering 。 NGINX的文档没有充分解释缓冲区的行为:如果数据正在被stream式传输(来自Tomcat)长期存在,在什么情况下缓冲区将被刷新(即当数据实际上被推送到客户端时)是不明显的HTTP连接。 我的观察是,从服务器推送的数据(对客户请求的响应)可能位于NGINX的缓冲区中,直到为该客户端发生下一个服务器生成的SockJS心跳。 这样做的效果是延迟25秒将响应传输到客户端! 我可以通过实验非常可靠地重现此问题 – 行为是确定性的,但是我无法解释configuration的缓冲区大小,正在传输的数据大小和NGINX行为之间的关系。 我的服务器的责任是生成响应客户端的命令调用; 每个响应的大小会有所不同(从几个字节到几十千字节),但是是独立的。 主要目标是减less对客户端命令的响应延迟。 NGINX只看到一个长期的HTTPstream; 将stream的内容划分为单独的命令响应(用于立即发送)将要求NGINX理解SockJS的专有协议,但是它不能。 因此,我认为NGINX的缓冲政策与我的使用情况根本是不相容的,并计划closuresproxy_buffering ; 这是明智的吗? NGINX的文档build议,如果proxy_buffering被禁用,上游服务器(Tomcat)将被迫保持HTTP响应打开,直到客户端收到所有的数据(这似乎是一个合理的缓冲定义!)。 因此,NGINX的文档build议禁用proxy_buffering ,因为它可能会浪费上游服务器资源。 但是,因为我的客户端使用XHRstream,我的服务器已经有义务为每个活动客户端持有HTTP连接(对吗?)。 因此,禁用proxy_buffering不应对我的Tomcat服务器产生负面影响; 它是否正确?