發表文章

目前顯示的是有「Nginx」標籤的文章

Nginx - Cache a site as proxy...

Nginx身為http server又為reverse proxy 期本身可以實作類似proxy的機制 能夠將靜態的資源暫存起來 而讓下一次的request可以直接從cache處提取 如此一來可以增加不少體驗上的速度 下面是設定的部份: server {     listen 80;     location / {         root /home/html/; #1         proxy_set_header X-Real-IP $http_host;         proxy_store on; #3         proxy_set_header Accept-Encoding '';         proxy_temp_path /home/tmp; #2         if ( !-f $request_filename ) #4         {             proxy_pass http://www.some-site.com:80 ;         }     } }  透過指定存放位置(#1), 暫存位置(#2),然後開啟暫存(#3),並指定當資源不存在時候,進行重新request(#4) 整個機制簡單的說就是:將瀏覽過的部分,都暫存起來,重複瀏覽就使用cache回覆 參考網站: Nginx 5種proxy方式: http://www.jzxue.com/fuwuqi/fuwuqijiqunyuanquan/200907/04-2316.html

Nginx reverse proxy setting...

利用Nginx作為Reverse proxy是常見的用途 如果要在proxy_pass的地方指定一台以上的server作為後端reverse proxy重導的server 可以利用upstream參數來處理 http {   upstream your.server.domain {     server 11.22.33.1:80 ;     server 11.22.33.2:80 ;     server 11.22.33.3:80 ;     # .... 依此類推   }   server {     listen 80;     location / {       proxy_pass http://your.server.domain ; # 這邊與upstream的設定的名稱需相同       proxy_redirect default;     }   } }

Nginx Rewrite

Nginx的設定檔中,可以針對不同的目的端做流量導向,或者又可以稱作是rewrite... 也就是網址重新導向的動作, 設定上不難,原則上可以在server{...}中設定下面的判斷與rewrite語句即可: if ($host ~* ^(example\.com|www\.example\.com)$ ){   rewrite ^/(.*)$ https://example.com/$1 permanent; } 或者可用: rewrite ^ https://$server_name$request_uri? permanent; 範例: server { listen 1.2 .3 .4 : 80 default ; server_name example.com www.example.com ; ## redirect http to https ## rewrite ^ https://$server_name$request_uri? permanent ; } 參考至: http://www.cyberciti.biz/faq/linux-unix-nginx-redirect-all-http-to-https/

Nginx as reverse proxy for Apache HTTP

圖片
下面設定主要讓Nginx可以作為另一台server的reverse proxy 也就是說前端Nginx+後端Apache HTTPD(這兩台不一定要在同一台server/ip) 先說明一下: 紅色部分是主要設定,http, https都一樣,意思是讓nginx可以重導某個ip的80 port,如果server設定在同一台,則apache httpd必須是與nginx不同port (ex: httpd --> 8000, nginx --> 80,則這邊設定就變成proxy_pass http://$http_host:8000;) 藍色部分是如果nginx, httpd server在不同台時候,可以強制將後端網頁的ip與相對位置的ip均轉譯成前端的伺服器ip server {     listen       80;     ....(skip)     location / {          ### Set headers ####         proxy_set_header Host $http_host;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         ### Most PHP, Python, Rails, Java App can use this header ###          proxy_set_header X-Forwarded-Proto https;         proxy_redirect off;     ...

Nginx驗證設定檔案

滿好用的指令,希望可以減少一些production時候設定檔錯誤造成server無法work的狀況... # nginx -t nginx: the configuration file /opt/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /opt/local/etc/nginx/nginx.conf test is successful

Nginx ssl offload for Tomcat in SmartOS

本篇的目的主要在使用Nginx Reverse Proxy的功能來卸載HTTPS SSL 也就是說Tomcat走HTTP 8080 Port,本身無HTTPS SSL 然後透過Nginx來加上HTTPS SSL,提供HTTPS服務於443 Port上 環境以MiCloud SmartOSPlus64為主 Environment # uname -a SunOS MiCloudDBT.local 5.11 joyent_20120808T224832Z i86pc i386 i86pc Solaris Installation # pkgin -y in  nginx-1.0.4 apache-tomcat-6.0.32 sun-jdk6-6.0.26  Servers Tomcat server: 123.123.123.123 (Port: 8080) Nginx server: 123.123.123.123 (Port: 80, 443) Nginx Configure (/opt/local/etc/nginx/nginx.conf) # 說明 - 此部份設定主要包含: # 1. 建立tomcat - nginx upstream設定 # 2. 設定Nginx https server over 443 port,並指定ssl key # 3. 設定欲轉址的Tomcat context(ex: http://123.123.123.123:8080/examples / --> https://123.123.123.123/examples /) # ps: http 80段落的設定(紫色),是強制將http 80的所有request轉導至https,必須有這個設定,不然每個tomcat的link都會被導到http而非https user   www  www; worker_processes  1; events {     worker_connections  1024; } http {     i...

Self Sign SSL

下面介紹兩種self sign ssl的作法 預期產出key: server.key, cert: server.csr兩個檔案 基本款: openssl genrsa -out server.key 1024 openssl req -new -key server.key -out certrequest.csr openssl x509 -req -in certrequest.csr -signkey server.key -out server.crt 增加移除key phase步驟: openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 於ExpressJs中,可以如下設定: Step 1: 產key 將產出的server.key, server.crt放到專案目錄下 Step 2: 設定建立https server所需之options var key = 'server.key'; var crt = 'server.crt' var privateKey = fs.readFileSync(key); var certificate = fs.readFileSync(crt); var options = {     key: privateKey,     cert: certificate, }; Step 3: 於createServer中加入key options https.createServer(options, app).listen(app.get('port'), function(){   console.log("Express server lis...

詳盡的Nginx效能測試

最近開始想要研究Nginx...找到一個很詳盡的壓測結果 給大家參考: http://www.cnblogs.com/killkill/archive/2010/04/14/1711810.html