Nginx
安裝 (on Ubuntu)
更新apt-get
套件列表:
$ sudo apt-get update
安裝nginx
:
$ sudo apt-get install nginx
網站的nginx config
位置:
/etc/nginx/sites-available/[sitename]
啟動nginx
:
$ sudo service nginx start
重啟nginx
:
$ sudo service nginx restart
重載config
:
$ sudo service nginx reload
基本指令
查看nginx.conf
安裝路徑:
$ nginx -t
查看nginx
程序位置:
$ ps aux | grep nginx
啟動nginx
:
$ nginx
停止nginx
:
$ nginx -s stop
重新讀取設定檔:
$ nginx -s reload
Reverse Proxy
在/etc/nginx/sites-available/
目錄底下新增一個設定檔:
server {
# http 連線
listen 80;
# 設定對外的 IP 或 Domain
server_name 13.113.32.200;
# 交由 Apache 或 Resin 處理
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
# Apache 或 Resin 的 80 port 必須改成其他 port
proxy_pass http://127.0.0.1:8080;
}
}
Load Balance
upstream backend {
server server1.com;
server server2.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
更多設定請參考這篇。
Redirect
將http
連線轉成https
。
方法一:
server {
listen 80;
server_name my.domain.com;
return 301 https://my.domain.com$request_uri;
}
- 301 代表 permanent redirect
方法二:
server {
server_name my.domain.com;
rewrite ^/(.*)$ https://my.domain.com/$1 permanent;
}
Proxy Pass
實作短網址:將短網址格式的網址轉交由後端的API執行。
location ~ (?<myvar>[a-zA-Z_0-9]+) {
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_pass http://127.0.0.1:8080/project/redir?id=$myvar;
}
例如:
輸入以下https://short.url/8ls72
短網址,會執行http://127.0.0.1:8080/project/redir?id=8ls72
API,這支 API 會將短網址轉向實際的長網址。
Allow / Deny
限制/api/GetSomething
這支 API,只允許某些 IP 存取。
location ^~ /api/GetSomething {
...
allow xxx.xxx.xxx.xxx;
allow yyy.yyy.yyy.yyy;
deny all;
}