<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nginx on 戲中話</title><link>https://blog.iphpo.com/tags/nginx/</link><description>Recent content in nginx on 戲中話</description><generator>Hugo</generator><language>zh-tw</language><managingEditor>herb09638@gmail.com (Herb)</managingEditor><webMaster>herb09638@gmail.com (Herb)</webMaster><lastBuildDate>Mon, 26 Mar 2018 04:00:00 +0800</lastBuildDate><atom:link href="https://blog.iphpo.com/tags/nginx/index.xml" rel="self" type="application/rss+xml"/><item><title>Nchan安裝 - 編譯原始碼</title><link>https://blog.iphpo.com/blog/2018/03/nchan%E5%AE%89%E8%A3%9D-%E7%B7%A8%E8%AD%AF%E5%8E%9F%E5%A7%8B%E7%A2%BC-install-nginx-from-source/</link><pubDate>Mon, 26 Mar 2018 04:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2018/03/nchan%E5%AE%89%E8%A3%9D-%E7%B7%A8%E8%AD%AF%E5%8E%9F%E5%A7%8B%E7%A2%BC-install-nginx-from-source/</guid><description>&lt;h1 id="編譯原始碼"&gt;編譯原始碼&lt;/h1&gt;
&lt;p&gt;以下流程皆是在CentOS 7下進行，其他系統雖有不同，但都大同小異。&lt;/p&gt;
&lt;h2 id="編譯前的準備"&gt;編譯前的準備&lt;/h2&gt;
&lt;p&gt;安裝編譯所需套件&lt;/p&gt;</description></item><item><title>產生自簽的SSL憑證</title><link>https://blog.iphpo.com/blog/2018/01/%E7%94%A2%E7%94%9F%E8%87%AA%E7%B0%BD%E7%9A%84ssl%E6%86%91%E8%AD%89/</link><pubDate>Sun, 21 Jan 2018 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2018/01/%E7%94%A2%E7%94%9F%E8%87%AA%E7%B0%BD%E7%9A%84ssl%E6%86%91%E8%AD%89/</guid><description>&lt;p&gt;只是做個紀錄&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
...
$ openssl rsa -passin pass:x -in server.pass.key -out server.key
writing RSA key
$ rm server.pass.key
$ openssl req -new -key server.key -out server.csr
...
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
...
A challenge password []:
$ openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nginx ssl config&lt;/p&gt;</description></item><item><title>CentOS上的Nginx在新版Chrome上無法啟動 HTTP/2</title><link>https://blog.iphpo.com/blog/2017/07/centos%E4%B8%8A%E7%9A%84nginx%E5%9C%A8%E6%96%B0%E7%89%88chrome%E4%B8%8A%E7%84%A1%E6%B3%95%E5%95%9F%E5%8B%95-http2/</link><pubDate>Thu, 27 Jul 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/07/centos%E4%B8%8A%E7%9A%84nginx%E5%9C%A8%E6%96%B0%E7%89%88chrome%E4%B8%8A%E7%84%A1%E6%B3%95%E5%95%9F%E5%8B%95-http2/</guid><description>&lt;p&gt;我一直以為 我在設定檔裡加入http2 就會開啟http2&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;server &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; listen &lt;span class="m"&gt;443&lt;/span&gt; ssl http2&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;結果我用 Chrome 內建的工具檢查&lt;/p&gt;
&lt;p&gt;卻沒有啟動 HTTP/2&lt;/p&gt;
&lt;p&gt;&lt;a href="chrome://net-internals/#http2"&gt;chrome://net-internals/#http2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這才驚覺我的網站一直都沒有啟動HTTP/2&lt;/p&gt;
&lt;p&gt;原來是 CentOS 內建的OpenSSL版本&lt;/p&gt;
&lt;p&gt;沒有支援 ALPN&lt;/p&gt;
&lt;p&gt;導致Chrome會自動切換成HTTP/1.1&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ./openssl version &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OpenSSL 1.0.1e-fips &lt;span class="m"&gt;11&lt;/span&gt; Feb &lt;span class="m"&gt;2013&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但是用 yum update這就已經是最新版本&lt;/p&gt;
&lt;p&gt;所以只好自己編譯新版OpenSSL了&lt;/p&gt;</description></item><item><title>整理 exited on signal 11 (SIGSEGV) 解決方法</title><link>https://blog.iphpo.com/blog/2017/04/%E6%95%B4%E7%90%86-exited-on-signal-11-sigsegv-%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%B3%95/</link><pubDate>Fri, 07 Apr 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/04/%E6%95%B4%E7%90%86-exited-on-signal-11-sigsegv-%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%B3%95/</guid><description>&lt;p&gt;&lt;code&gt; [06-Apr-2017 22:55:02] WARNING: [pool www] child 6785 exited on signal 11 (SIGSEGV) after 7896.992354 seconds from start &lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;首先這個錯誤是某個php script崩潰&lt;/p&gt;
&lt;p&gt;不是error也不是遇到什麼錯誤&lt;/p&gt;
&lt;p&gt;而是執行過程整個process崩潰&lt;/p&gt;
&lt;p&gt;查了一些資料&lt;/p&gt;
&lt;p&gt;整理出有幾個原因&lt;/p&gt;</description></item><item><title>在CentOS7 上 安裝Nginx + ModSecurity建立免費WAF</title><link>https://blog.iphpo.com/blog/2017/03/%E5%9C%A8centos7-%E4%B8%8A-%E5%AE%89%E8%A3%9Dnginx-modsecurity%E5%BB%BA%E7%AB%8B%E5%85%8D%E8%B2%BBwaf-build-free-waf-using-nginx-and-modsecurity/</link><pubDate>Sun, 12 Mar 2017 00:00:00 +0800</pubDate><author>herb09638@gmail.com (Herb)</author><guid>https://blog.iphpo.com/blog/2017/03/%E5%9C%A8centos7-%E4%B8%8A-%E5%AE%89%E8%A3%9Dnginx-modsecurity%E5%BB%BA%E7%AB%8B%E5%85%8D%E8%B2%BBwaf-build-free-waf-using-nginx-and-modsecurity/</guid><description>&lt;p&gt;WAF是Web Application Firewall的縮寫&lt;/p&gt;
&lt;p&gt;其原理是將已知的攻擊手法，用匹配方式偵測並阻擋&lt;/p&gt;
&lt;p&gt;所以可以預想得到&lt;/p&gt;
&lt;p&gt;規則會列很多條&lt;/p&gt;
&lt;p&gt;也不一定全面&lt;/p&gt;
&lt;p&gt;只需要熟悉漏洞原理的人&lt;/p&gt;
&lt;p&gt;照樣可以繞過&lt;/p&gt;
&lt;p&gt;但有總比沒有好&lt;/p&gt;
&lt;p&gt;至少可以過濾掉大部分的script kiddie&lt;/p&gt;
&lt;p&gt;除了ModSecurity之外&lt;/p&gt;
&lt;p&gt;還有一個專門for nginx的WAF叫做&lt;a href="https://github.com/nbs-system/naxsi"&gt;naxsi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這個有機會也可以試用看看&lt;/p&gt;
&lt;p&gt;不過這次先用ModSecurity&lt;/p&gt;
&lt;p&gt;要把nginx跟ModSecurity結合&lt;/p&gt;
&lt;p&gt;必須要自己compile nginx和ModSecurity&lt;/p&gt;
&lt;p&gt;以下用我寫的shell script一步一步做講解&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 18pt;"&gt;Step 1. 安裝compile所需套件&lt;/span&gt;&lt;/p&gt;</description></item></channel></rss>