Articles of nginx

cgit只能用于命令行,而不能用于nginx

像很多次一样,我使用虚拟机来testing一些东西。 这就是configuration可能有点脏的原因。 我只是试着让cgit和nginx一起运行。 我创build了一个包含git仓库的/git (owner: www-data:www-data )目录。 我的cgitconfiguration( /etc/cgitrc )是: virtual-root=/htdocs/cgit/ css=/htdocs/cgit/cgit.css logo=/htdocs/cgit/cgit.png scan-path=/git 我在/etc/nginx/sites-available/default的默认服务器上添加了以下部分: location ~* ^.+\.(css|png|ico)$ { expires 30d; } location /htdocs/cgit/ { index cgit.cgi include fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/htdocs/cgit/cgit.cgi; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param PATH_INFO $uri; fastcgi_param QUERY_STRING $args; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; […]

nginx可以在接口websocket时设置'Origin'头部吗?

我们知道nginx可以从1.3.13版本开始代理WebSocket,而且我们也知道有些时候WebSocket服务器会authentication'Origin'头文件,所以有人说你可以这样做: proxy_set_header Origin ""; 渲染原始标题为空,但我testing它使用我的Wheezy框( nginx-extras包在backports中 ),并有一个负面的结果,服务器端仍然从客户端得到Origin头。 所以这里是一个问题:这一行不行,对吧?

用nginx提供静态文件

也许我错了,所以之前要问我的问题,我会解释一下我想设置什么:我有一个VPS,我想有多个用户的网站,拒绝给所有用户看到的权限别人的目录。 这是一个Linux,但文件系统只支持基本的权限(所有者,组,其他),没有ACL。 因此,我安装了以用户“nginx”运行的nginx,然后php-fpm以每个用户一个池作为相应用户运行。 每个“虚拟主机”正在监听不同的端口(8000 +用户ID – 1000),则:80是基于所使用的域的逆向代理 这对php文件工作正常,因为fpm的池有读权限(它是作为用户运行)。 但是对于静态文件,它是直接处理它们的nginx,它使用不允许的用户“nginx”。 我宁愿真的能够让每个网页文件具有0700或0770权限,所以不存在一个fcgi客户端来做到这一点(提供静态文件运行,如定义的用户,如php-fdm)? 可以fpm做到这一点? 还是设置775权限更好? (我也可以将每个用户组添加到nginx中,但由于某些系统限制了用户可以进入的组的数量,所以我不确定这是个好主意……)

基于SNI的Nginx代理无需解密

我正在使用以下(简化)configuration通过同一个端口代理http和https连接(aws elastic beanstalk所要求的): server { listen 777 ssl; server_name foo.com; ssl_certificate /etc/nginx/ssl/foo.crt; ssl_certificate_key /etc/nginx/ssl/foo; root /usr/share/nginx/www; index index.html index.htm; error_page 418 = @upstream; error_page 497 = @upstream; location / { return 418; } location @upstream { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } } 我想将上游更改为uwsgi,并让uwsgi处理ssl,因为这会简化部署。 我怎样才能调整我的configuration工作SNI HTTPS和HTTP没有Nginx解密sslstream量?

上传图片到服务器时,wordpress / php-fpm崩溃

我已经成功地将一个wordpress服务器迁移到新的VPC(亚马逊),但看起来像php-fpm无法处理图像上传。 当我上传一张图片时,它会部分显示,然后停顿,甚至无法启动。 之后,它挂起。 如果我重新启动php-fpm,服务器会恢复生机,但是图像却没有上传。 所以我想这是一个php-fpm无法处理file upload的问题。 我logging了php-fpm,但是它不会抛出任何错误,只有守护进程启动/停止 [26-Sep-2014 09:17:24] NOTICE: Terminating … [26-Sep-2014 09:17:24] NOTICE: exiting, bye-bye! [26-Sep-2014 09:17:24] NOTICE: fpm is running, pid 290 [26-Sep-2014 09:17:24] NOTICE: ready to handle connections [26-Sep-2014 09:17:24] NOTICE: systemd monitor interval set to 10000ms nginx中的错误日志看起来像这样 2014/09/26 09:17:24 [error] 276#0: *1 recv() failed (104: Connection reset by peer) while […]

Docker PHP-FPM&NGINX

我有一个与我的容器相互沟通的问题。 容器的连接正在工作,但php-fpm过程不起作用。 PHP容器= 172.17.2.106 nginx容器= 172.17.2.107 这是我在nginx容器上运行的唯一站点的nginxconfiguration。 upstream phpcgi { server php:9000; } server { listen 80 ; root /srv/www; index index.html index.htm index.php; server_name localhost; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: fastcgi_pass […]

nginx:根据原始请求URL(不是$ server_name)redirect到SSL

我有一个类似于这个nginxconfiguration: server { server_name my-english-site.com my-french-site.com; listen 0.0.0.0:80; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 0.0.0.0:443 ssl; server_name my-english-site.com my-french-site.com; } 当有人去http://my-french-site.com时 ,它会redirect到https://my-english-site.com ,因为rewrite指令使用$server_name指令中的第一个服务器。 我尝试用$server_name $hostreplace$server_name ,期望它使用Host请求头的值。 但是它仍然会redirect到英文url。 如何将非HTTPS请求redirect到相应的HTTPS URL? 谢谢!

通过VPN访问与VPN相同的服务器上的网站

我刚刚完成了在Ubuntu 12.04上运行的OpenVPN服务器的设置,并且能够从我自己的计算机(客户端)连接到它。 我可以设置VPN服务器,通过push "redirect-gateway def1"指令,通过VPN路由所有stream量。 当我然后检查我的IP它不显示我的真实的IP,但VPN IP。 我也能够通过VPN限制一些stream量。 即:我的所有stream量都通过我的普通互联网连接,并且stream量到我想要的服务器(46.XX.XX.XX)通过VPN。 我通过push "route 46.XX.XX.XX 255.255.255.255"指令来实现此push "route 46.XX.XX.XX 255.255.255.255" 。 这工作正常:谷歌显示我的真实IP地址,当我尾随我的46.XX.XX.XX服务器上的nginx访问日志,我可以看到stream量来自VPN。 这一切工作正常,我很高兴,但在我的VPN服务器,我也与Nginx主办一些其他网站。 如果我在这些站点上的访问日志尾巴,它显示我的真实IP地址,所以到VPN服务器本身的stream量不通过VPN(即使我通过VPN指令“直接所有stream量”)。 读一下,我明白这是正常的,因为stream向VPN服务器本身的stream量没有机会通过VPN重新路由。 我在任何地方都找不到的是关于如何设置VPN服务器configuration的一些信息,以便我可以通过VPN访问我的VPN服务器上托pipe的网站。 我的iptables只有一个规则: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 我的最终目标是能够通过VPN将stream量传送到VPN服务器本身,然后我将能够限制对我的网站的访问(通过允许/拒绝规则),以便只能由连接的人访问到VPN)。 这是可以通过更多的iptables规则来实现吗? 或不同的推送路线指令?

Pyramid + Nginx + uWSGI Server 500错误

我有一个使用Pyramid框架以Python编写的uWSGI应用程序。 Nginxconfiguration如下(我遗漏了一些,但我不认为他们会很重要): upstream uwsgicluster { server 127.0.0.1:8989; } # Proxying connections to application servers location / { include uwsgi_params; uwsgi_pass uwsgicluster; proxy_redirect off; 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-Host $server_name; } uWSGIconfiguration如下(使用.ini文件): [uwsgi] socket = 127.0.0.1:8989 master = true home = /home/user/userenv paste = config:/home/user/userenv/app/production.ini harakiri = 30 logto = […]

与Uwsgi设置的麻烦

我有一个uwsgi ini,看起来像这样: [uwsgi] socket = :8001 processes = 4 master = true wsgi-file = /project/dev/myproject/conf/deployment/wsgi/dev/myproject-site.wsgi harakiri = 30 daemonize = /logs/log/myproject/myproject-uwsgi.log uid = www-data gid = www-data plugins-dir = /usr/lib/uwsgi/plugins plugins = python34 我似乎无法加载python34插件: found fd 3 mapped to socket 0 (:8001) running /usr/local/bin/uwsgi *** has_emperor mode detected (fd: 5) *** [uWSGI] getting INI configuration […]