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=8ls72API,這支 API 會將短網址轉向實際的長網址。

Allow / Deny

限制/api/GetSomething這支 API,只允許某些 IP 存取。

location ^~ /api/GetSomething {
        ...
        allow xxx.xxx.xxx.xxx;
        allow yyy.yyy.yyy.yyy;
        deny all;
}

參考網站

nginx.conf 設定,不錯的參考網站:

參考一、基本設定

參考二、基本設定

參考三、基本設定

參考四、優化

特殊設定

基礎觀念建立

nginx.conf 設定大全 中文詳解

location 中取得網址列變數

使用 return 轉址

使用 rewrite 轉址

results matching ""

    No results matching ""