Articles of nginx

nginx服务于基于用户代理的不同静态目录

我有这样的目录结构: HTML | |–android/ |–ios/ 总之,我有2个目录(ios&android)在HTML / 这两个目录都包含index.html。 在android / index.html有链接到../ios&在ios / index.html有链接到../android切换用户从iOS到android&android到ios .. server { listen 80 default_server; root /home/vishant/HTML; index index.html index.htm; server_name wishfeed.l; location / { try_files $uri $uri/ =404; } } 我的nginxconfiguration就像上面给出的 如果用户代理是ios /如果用户代理是android,如何服务目录。

在ubuntu / nginx启动时运行一个shell命令

我有一个运行nginx和node.js的ubuntu 13,启动mongodb我需要在命令行上运行: mongod –config /etc/mongodb.conf 问题是,当我退出terminal,它停止,我怎么能把这个添加到启动脚本? 我认为这是引导scrpit: http : //pastebin.com/raw/ENxuMcpA

如何拒绝访问某个HTML文件

我知道如何拒绝访问所有的网站,但我想知道如何拒绝访问IP到网站test.html使用NGINX

在DigitalOcean上安装Nginx Debian 8.5失败,出现“Unmet依赖关系”

我正在尝试在DigitalOcean主持的Debian 8.5 x64机器上安装Nginx-full,如下所示: sudo apt-get install nginx-full 但我收到以下错误: 〜>正在读取软件包列表…完成 〜>build立依赖关系树 〜>读取状态信息…完成 〜>你可能想运行'apt-get -f install'来更正这些: 〜>以下软件包有未满足的依赖关系: 〜>primefaces: 取决于:gconf2,但不会被安装 取决于:gconf-service,但它不会被安装 取决于:libnotify4,但不会被安装 取决于:libxtst6,但不会被安装 取决于:libnss3,但不会被安装 取决于:gvfs-bin,但不会被安装 取决于:xdg-utils,但不会被安装 〜> nginx-full:取决于:nginx-common(= 1.6.2-5 + deb8u2),但不会安装 取决于:libgd3(> = 2.1.0〜alpha〜),但不会被安装 E:未满足的依赖关系。 尝试使用“apt-get -f install”(或者指定解决scheme)。 我明白这里有什么问题,这是解决问题的方法。 有没有简单的方法来说“嘿,请安装所有这些”或不是真的吗? 🙂

单个nginx虚拟主机中的不同php-fpm池

我在网上search了一段时间,但不能成功。 我的问题如下: 我想在一个nginx虚拟主机中使用不同的php-fpm池,但是却找不到configuration我的vhostconfiguration的location ~ \.php$ {…}一部分来支持两个不同的工人池。 我唯一的解决scheme是将Web请求redirect到另一个nginx站点。 先谢谢你

ngx_stream_core_module和最终用户ip

比方说,我有一些服务工作在原始的TCP级别,我想添加一个负载平衡。 我试过使用ngx_stream_core_module 。 虽然TCPstream确实代理到后端服务器,但我发现了一些我无法解决的问题。 我的服务在node.js中写入,这是设置进程pipe理器的常用技术,比如pm2,它在消耗太多内存的情况下重新启动节点。 但是,这显然会终止所有连接的客户端。 我的期望是nginx将用户连接到上游的下一个服务器(也许它也是> 2016,但是),但我的连接只是closures。 我的服务需要最终用户的IP和远程端口来操作,但在应用程序套接字的remoteAddress和remotePort指向本地nginx实例。 也就是说,当我打印到缓冲区时,我看到127.0.0.1连接代理时,我真正的IP当我直接连接到节点。 我看到nginx支持一些configurationvariables(自v.1.11.2起),而$ remote_addr就是其中之一。 但我没有看到任何信息如何将这个variables转发到上游。 proxy_set_header指令在stream中不可用,因为TCP中没有任何“头文件”,所以它看起来没问题。 这甚至有可能吗? 我不是一个devops,而是一个编码器,所以我听说了haproxy,但是我不知道它是否可以解决这两个问题。 它可以? 为了testing,我用哑巴回声node.js服务器,所有的工作部分被缩小到 server.on('connection', socket => { socket.write(`Hello from ${instance}, ${socket.remoteAddress}:${socket.remotePort}\n`); }); 而我的nginxconfiguration的相关部分是 stream { upstream echo { server localhost:9000; server localhost:9001; } server { listen 8080; proxy_connect_timeout 1s; proxy_timeout 2h; proxy_pass echo; } } 最后我用netcat来检查一下东西。 // direct connect ~|⇒ […]

Nginx:使用uwsgi_pass与proxy_pass后备?

如果uwsgi服务器不可用,是否可以configurationNginx来代理uwsgi服务器( uwsgi_pass ),回到标准的http代理( proxy_pass )? 我的开发环境作为给定端口上的标准HTTP服务器来运行,但是在生产中它将在uWSGI套接字下运行。 我希望能够开发我的应用程序,然后(仍然在我的开发计算机上)在uwsgi服务器下启动应用程序进行testing,而不必每次都切换我的nginxconfiguration。 如果nginx可以configuration为使用uwsgi_pass 尝试 ,但是如果出现错误(因为uwsgi服务器没有运行),则返回到proxy_pass,这将是理想的。 我也可以看到这在生产环境中很方便:通常,代理本地uwsgi套接字,但如果由于某种原因不起作用(对于某些任意定义不起作用),代理到某个辅助http服务器。 不过,现在只是为了让开发更方便。

SELinux阻止Nginx读取文件

我在我的CentOS 7机器上运行了nginx。 我每天运行一个cron作业,生成新的Diffie-Hellman参数。 它们保存在/etc/ssl/dh/dhparam.pem 。 但SELinux阻止nginx读取这个文件。 这是nginx错误日志中的行: nginx[3189]: nginx: [emerg] BIO_new_file("/etc/ssl/dh/dhparam.pem") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/dh/dhparam.pem','r') error:2006D002:BIO routines:BIO_new_file:system lib) 这是审计日志: type=AVC msg=audit(1473285202.181:334): avc: denied { open } for pid=1393 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file type=AVC msg=audit(1473285832.647:743): avc: denied { open } for pid=2958 comm="nginx" path="/etc/ssl/dh/dhparam.pem" dev="dm-1" ino=101646309 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_tmp_t:s0 tclass=file type=AVC msg=audit(1473287010.821:803): avc: […]

Nginx监听多个端口,但重写为一个

所以我有一个应用程序运行,由于传统的原因,必须保持它的旧url与尾随端口号码工作。 所以我有一个类似于这样的configuration: server { listen 443 ssl; listen 8080 ssl; server_name myurl.com; ssl on; ssl_certificate /etc/nginx/conf.d/certfile.pem; ssl_certificate_key /etc/nginx/conf.d/keyfile.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:7990; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Location $host:443; […]

nginx:按模式和默认规则redirect

域名已不再使用,我需要redirect到正确的网站,但只为特定的网站。 server { listen 80; server_name example.org; location ~ ^/(page|show) { return 301 http://new-domain.org/$request_uri; } location = / { return 301 http://new-domain.org/; } return 410; } 只有匹配模式的主页面和url才会被redirect,其他所有内容都会抛出410个HTTP代码 但上面的configuration不工作,目前一切都扔410 …