2014/11/13
在reverse proxy後取得原始客戶端ip
首先文章以以下代稱
Nginx代表的是Reverse proxy server
Apache代表的是Backend server
透過Nginx反向代理Apache
通常在Apache拿到的Client IP會是這個Nginx的IP
為了將Client IP(Remote IP)傳送到Apache
我們必須在Nginx與Apache做點設定
Nginx端的設定:
proxy.conf
```
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
```
此設定是為了將Client IP放到往Apache送的Request header中
但是單單做這樣的這定Apache的log還是不會紀錄Nginx的IP
以下重要的來了
Apache端必須安裝mod_rpaf這個套件
```
sudo apt-get install libapache2-mod-rpaf
```
接著編輯rpaf.conf
```
<ifmodule mod_rpaf-2.0.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1 #這邊加上Nginx的IP
RPAFheader X-Forwarded-For
</IfModule>
```
將Nginx與Apache重啟後
Apache的log就會記錄真正的Client IP了
2014/11/05
無法使用key登入ssh的問題
網路上有一堆教學文章
像是
"使用 SSH key 登入"
"兩行指令搞定 Linux SSH登入免密碼"
等等
我試了一下果然照這樣設定就可以免密碼登入
但是偶而還是遇到了一些問題
以下為我整理後與解決問題的方法
產生rsa公私密鑰
-f為指定產生的檔案位置
-P代表產出來的密碼passphrase為空(這邊採用簡單方法以避免登入時還是需要輸入passphrase 見註1)
ssh-keygen -t rsa -f ~/.ssh/sshkey -P ''
將公鑰加入到server的authorized_keys中
scp sshkey.pub user@your.server.com:~/.ssh/
ssh your.server.com
cat ~/.ssh/sshkey.pub >> ~/.ssh/authorized_keys
或者
ssh-copy-id -i ~/.ssh/sshkey.pub your.server.com
寫入config設定
cat ~/.ssh/config
Host your.server.com
HostName your.server.com
User user
Port 22
identityFile ~/.ssh/sshkey
設完之後卻可以免密碼登入ssh了
所以我又設了第二台
結果卻又一值提示我要輸入密碼
研究了很久發現是authorized_keys的權限不對
請修改成600或640
chmod 600 ~/.ssh/authorized_keys
這樣就完成囉
註1:
由於指定passphrase後 在login時還是需要輸入這個passphrase
若是必須指定passphrase的話請用ssh-agent去自動輸入passphrase
可參考 http://josephj.com/article/understand-ssh-key/
2014/11/03
送交(commit) git log 到svn repository
最近迷上了git,所以基本上只要修改或建立新的專案我都是建立git的repository
不過公司還是使用svn當作repository
那如果我想要把我在git上的commit log保留並且commit到svn那該怎麼辦呢?
當初從svn轉到git有用到一個套件"git-svn"
這次也是利用它來達成我的目標:
將git的log commit到svn上
首先 安裝它
環境:CentOS 5.9
```
yum install git-svn
```
利用git-svn 抓取svn source tree下來
```
git svn clone svn://moa.tw/my/svn/repository/more/folder/is/working ./svn2git
```
將原先存在的git repository新增為svn2git底下名為source的remote
```
cd svn2git/
git remote add -f source /moa/tw/git/repo/project
```
重新間接基準點到git-svn
```
git rebase --onto remotes/git-svn --root source/master
```
途中也許有衝突發生
```
Auto-merging view/base2.tmpl.html
CONFLICT (content): Merge conflict in view/base2.tmpl.html
Auto-merging view/base.tmpl.html
CONFLICT (content): Merge conflict in view/base.tmpl.html
Failed to merge in the changes.
```
修正後繼續即可
```
git add view/base2.tmpl.html
git add view/base.tmpl.html
git rebase --continue
```
之後就會看到一堆類似下面的訊息,也就是正在一筆一筆轉換
```
Applying: xxxxxxxxxxxxxxxxx
Applying: yyyyyyyyyyyyyyyyy
```
跑完之後執行
```
git svn dcommit
```
就會把log一併commit到svn repository了
接下來該探討的就是:
我是否可以繼續用git commit/push到git的repo,但是我想要commit回svn時,隨時都可以commit,而不怕source衝突
參考連結:
http://goodliffe.blogspot.tw/2011/08/pushing-git-repository-into-existing.html
訂閱:
文章 (Atom)