Articles of nginx

截至2017年,任何人都能够确定地在nginx上设置httponly安全cookie吗?

我在ubuntu 14.04上用php5.5.9使用nginx 1.12.1。 我有这个下面的php.ini设置: session.cookie_secure = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = 1 我已经安装了nginx-extras,并在/etc/nginx/nginx.conf主文件more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure'; more_set_headers 'Set-Cookie: $sent_http_set_cookie; secure'; 但我似乎仍然有set-cookie:; secure 像我没有设置上游会话设置一样set-cookie:; secure我的标题。 我也在serverfault.com上find这个nginx模块https://github.com/AirisX/nginx_cookie_flag_module,但只要它不是核心nginx构build的一部分,我不喜欢使用它,也不热衷于手动构buildnginx。 这给我留下了这个问题。 问题1 :由于HttpOnly仍然是OWASP前10名单的一部分,并且被所有漏洞扫描器持续扫描,为什么nginx不能为此提供清晰的代理头? 问题2 :除了所有的哲学考虑,如何在2017年设置Nginx的Cookie安全? 提前致谢

没有初始path组件的nginx位置

我有一个位置块,看起来像这样: root /var/www/ProjectP; location /p/ { index index.php; try_files $uri $uri/ =404; } location ~ /p/.*\.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } 为了做这个工作,我创build了一个目录/var/www/ProjectP/p/ ,这是一个非常糟糕的黑客攻击,因为它将知道项目在项目中的位置,而不是nginx。 Nginxconfiguration应该能够将其移动到/pp/而不需要修改项目P. 这个特定的项目没有proxy_pass指令,但接下来会发生,然后我的黑客是不太可能工作。 我相信nginx有一个正确的方法来处理这种常见的东西,但我还没有find它。 任何指针? 更新1 正如@RichardSmith指出的那样,正确的做法肯定是一个别名指令。 在静态内容上testing这个效果很好: location /a/ { alias /var/www/ProjectA/; index index.html; try_files $uri $uri/ =404; } 当我用php代码做同样的事情时,我获得了一半的成功: location /p/ { alias /var/www/ProjectP/; index index.php; # First attempt to […]

问:如何基于HTTP头的nginx条件proxy_pass

如何做基于自定义HTTP头的条件proxy_pass 假设我有4个nginx引擎运行在我的专用networking中,让我们调用它:web1,web2,web3,web4。 我有一个主要的nginx服务器,坐在互联网和我的私人networking,让我们打电话:Main_Web 在与Main_web相同的主机上,我在端口5000上运行基于python的身份validation服务,让callit auth_backend.py。 作为authentication后端,这个auth_backend.py将返回401,如果用户是回教徒。 但是对于合法用户,它将返回到内部位置(/ afterauth)的redirect(302),并且还添加自定义HTTP标题, 即: X-HTTP-BACKEND = 'http://web4/thispage?var=2' /etc/nginx/conf.d/default server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; add_header X-Backend $http_x_backend; location / { proxy_pass http://127.0.0.1:5000 ; proxy_set_header Host $host; } location /afterauth/ { set $my_next_proxy $upstream_http_x_backend; proxy_pass http://$my_next_proxy ; } #error_page 404 /404.html; # redirect server error pages […]

Nginx的catch-allconfiguration文件

放弃这一点,我会留下来,以防有人在未来为别人解决问题。 删除的Vbox,所以我不能再testing它们了。 相反,我将使用apache2。 我想在我的开发机器上configuration我的nginx服务器,使其适用于所有匹配文件名的path。 例如,一个项目有以下分支,所以我检查一下: /var/www/version1.1/html /var/www/version1.2/html /var/www/version2.1/html 这是configuration文件的重要部分: root /var/www; # Add index.php to the list if you are using PHP index home.php index.php index.html index.htm index.nginx-debian.html; server_name _; location / { autoindex on; try_files $uri $uri/ =404; } location ~ version(.+)/html/\.php$ { alias $1/html; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index home.php; […]

Gitlablogin页面无法访问

我不小心configuration了每个注销的用户将被redirect到x域 ,这是通过使用Web界面中的pipe理面板完成的。 现在,我只能通过SSH访问东西,比如修改gitlab.rb ,我甚至试图访问数据库,看看有没有我可以修改的东西。 我怎样才能修改这个configuration,所以我可以再次login? 我被困在外面 (就像用钥匙把房子关上)。 我想要的是简单的,删除/修改告诉nginxredirect到该域的选项,但我找不到它在gitlab.rb 。

Nginx服务器中断Socket Conn On Node Proxy尽pipe节点服务器正在运行

我得到了太多[error] 17667#0: *344 connect() failed (111: Connection refused) while connecting to upstream, client:错误。 我很久没有find解决办法了。 这些是我的nginx设置。 服务器是在监听tcp 80端口的elb负载均衡器后面。 谢谢。 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { use epoll; worker_connections 10240; multi_accept on; } worker_rlimit_nofile 65535; http { port_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr – $remote_user [$time_local] "$request" ' '$status $body_bytes_sent […]

已经安装nginx使用OpenSSL 1.0.2的ALPN?

我想使用HTTP / 2并充分利用其function。 ALPN捆绑在OpenSSL 1.0.2中,但NGINX似乎并没有使用它。 好像OpenSSL已经是1.0.2l,我把nginx升级到1.13.6,但是仍然使用OpenSSL 1.0.1t。 # openssl version -v OpenSSL 1.0.2l 25 May 2017 nginx -V nginx version: nginx/1.13.6 built by gcc 4.9.2 (Debian 4.9.2-10) built with OpenSSL 1.0.1t 3 May 2016 (running with OpenSSL 1.0.2l 25 May 2017) TLS SNI support enabled 任何帮助让NGINX使用OpenSSL 1.0.2或如何启用ALPN将不胜感激。

Nginx的proxy_pass和proxy_set_header导致打开的文件太多

我在nginx中有下面的.conf来平衡服务器a和b: upstream myapp { server a.myapp.com; server b.myapp.com; } server { listen 80; server_name myapp.com; location / { proxy_pass http://myapp; } } 和两个服务器与PHP 7和laravel运行我的应用程序,在同一个nginx内。 通过这个configuration,主机头变成“myapp”,laravel在一些URL系统中使用它来进行资产和链接。 正如文档中所述,我使用了proxy_set_header指令,如下所示: upstream myapp { server a.myapp.com; server b.myapp.com; } server { listen 80; server_name myapp.com; location / { proxy_pass http://myapp; proxy_set_header Host $host; #this causes too many open files } […]

使用Docker Swarm为每个客户部署一个Docker容器是一个好习惯吗?

每当我得到一个新的客户,我需要为他部署一个独立的系统(nodejs服务器,数据库等)。 我想简化整个过程,这就是为什么我正在考虑使用Docker(特别是Swarm)。 但是用Docker Swarm为每个客户部署一个Docker容器是否是一个好习惯? 那个容器将运行nodejs服务,而只有一个数据库服务,但是每个客户都有独立的数据库文件。 我有这个问题,因为由于我对docker的理解有限,放大复制副本似乎主要是为了负载平衡。 但我的用法是一个客户一个容器/服务。 此外,每个客户在我的主域名下都有自己的域名,比如说我的公司有域名“xyz dot com”,那么客户A的域名是dot xyz dot com,客户B将有域名名字b点xyz点com。 我的nginx服务如何将每个客户的HTTP请求路由到它自己的容器? 谢谢

使用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 […]