顯示具有 nginx 標籤的文章。 顯示所有文章
顯示具有 nginx 標籤的文章。 顯示所有文章

2025/05/12

因為ssl加解密的几制已經搞很久了還是有問題
所以找看看其他的解決方案
這几天試了一下 nginx 的 mirror 功能
記錄一下

在要執行 mirror 的 nginx 上設定如下

server {
    listen 443 ssl;
    server_name aaa.com.tw;


    ssl_certificate /etc/ssl/certs/server.cer;
    ssl_certificate_key /etc/ssl/certs/server.key;


    location / {
        proxy_pass http://primary_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        mirror /mirror;

        mirror_request_body on;
    }

    location /mirror {
        internal;
        proxy_pass http://secondary_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 1s;
        proxy_connect_timeout 1s;
    }
}

upstream primary_backend {
    server 10.0.0.1:80;
}

upstream secondary_backend {
    server 10.0.0.2:80;
}

10.0.0.1 是提供服務的server

10.0.0.2 接收 mirror過來的內容

10.0.0.1 10.0.0.2 二台都必須要起web server並listen 非加密的 80 port

10.0.0.2只需要啟動即可 不需要跟 10.0.0.1有相同的網頁內容
因為如果10.0.0.2沒有 web server  mirror過來的封包會被直接丟掉 

同時在 10.0.0.2上啟動 ids 軟体 如 snort, suricata 等 分析mirror過來的內容

10.0.0.1會把client的request解密後同時送到 10.0.0.1 10.0.0.2 

但不會 mirror server response 的內容


10.0.0.2 上的nginx access log 預設會記錄 10.0.0.1這個ip
如果要改成 request client的ip  nginx.conf 要新增以下內容

server {
    set_real_ip_from 10.0.0.1;
    real_ip_header X-Real-IP;



2021/09/19

今天想把原本放在lxc nginx 上的iso 檔放到synology docker
先下載容器














下載後進行佈署



















設定80及22的對應連接埠























範本預設沒有安裝ssh 
所以要手動安裝




















到容器 詳細資料 開啟 終端機

apt update
apt install openssh-server


安裝好執行

service ssh start

docker內無法使用 sytemctl


目前碰到的問題是無法開几自動執行 ssh server
必須每次進終端機 手動啟動


2021/08/28

最近要求要把所有的網站改成 https

以 centos 7 apache 為例

首先取得憑証

因為單位有買整個domain的

所以直接拿來用


把憑証放到以下目錄

/etc/pki/tls/certs


安裝 mod_ssl

$ yum -y install mod_ssl


修改 ssl.conf

$ vi /etc/httpd/conf.d/ssl.conf

修改以下二行

SSLCertificateFile /etc/pki/tls/certs/server.cer 

SSLCertificateKeyFile /etc/pki/tls/certs/server.key


重新啟動 Apache

$ systemctl restart httpd.service


若使用nginx

修改 /etc/nginx/nginx.conf 加入以下藍色設定


server {

  listen 80 default_server;

  listen [::]:80 default_server;


  # 加入 SSL 設定

  listen 443 ssl default_server;

  listen [::]:443 ssl default_server;


  # 憑證與金鑰的路徑

  ssl_certificate /etc/pki/tls/certs/server.cer;

  ssl_certificate_key /etc/pki/tls/certs/server.key;


  # ...

}


systemctl restart nginx


https://www.codepulse.com.tw/zh-tw/ssl%E6%86%91%E8%AD%89%E5%AE%89%E8%A3%9D%E6%95%99%E5%AD%B8%EF%BC%8C%E4%BB%A5centos%E7%82%BA%E4%BE%8B


https://blog.gtwang.org/linux/nginx-create-and-install-ssl-certificate-on-ubuntu-linux/

2021/06/06

安裝jitsi的流程記錄一下 ubuntu 20.04

os安裝好後

apt update

apt upgrade -y

在DNS上設定好server的name

接下來 

apt install curl gnupg

curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'

echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

sudo apt-get -y update

sudo apt-get -y install jitsi-meet

如果要使用letsencrypt

apt install certbot

/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

重啟nginx
到 https://servername
就可以使用了

letsencrypt要記得每三個月renew一次
或使用crontab 
1 1 * * 6 /usr/bin/certbot renew

https://kafeiou.pw/2020/06/19/2489/
https://campus-xoops.tn.edu.tw/modules/tad_book3/page.php?tbdsn=1557

架完jitsi後

預設是完全開放

因為不可能使用ip來管制

所以想用ldap

找了很多文件

發現nginx可以利用轉導的方式來認証

就不用再有一堆安裝及設定


server {

    listen 443 ssl;

    listen [::]:443 ssl;

    server_name meet;

location / {

                auth_request /auth;

                try_files $uri $uri/ =404;

        }

        location = /auth {

                proxy_pass http://10.0.0.1/auth/;

                proxy_pass_request_body off;

                proxy_set_header Content-Length "";

                proxy_set_header X-Original-URI $request_uri;

        }

}


藍字部分加在原來的nginx config裡

紅字部分則是視需要轉導到原來已設定好ldap認証的server及路徑

改好後重啟 nginx 

https://techexpert.tips/zh-hans/nginx-zh-hans/nginx-%E6%B4%BB%E5%8A%A8%E7%9B%AE%E5%BD%95%E4%B8%8A%E7%9A%84-ldap-%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81/

2019/10/26

Load Balancing in NGINX

今天有人問graylog的三個node怎麼做load balance
想到之前玩過haproxy
可是查了一下資料
haproxy不支援UDP的load balance
nginx目前已經有支援了
設定方法如下

udp loadbalance

# Load balance UDP‑based DNS traffic across two servers
stream {
    upstream dns_upstreams {
        server 192.168.1.1:53;
        server 192.168.1.2:53;
    }

    server {
        listen 53 udp;
        proxy_pass dns_upstreams;
        proxy_timeout 1s;
        proxy_responses 1;
        error_log logs/dns.log;
    }
}

=============================================================

tcp load balance

upstream mytest {
server 192.168.2.1 weight=3;
server 192.168.2.2 weight=2;
}
server {
listen 443 ssl;
server_name my.test.tw;
access_log /var/log/nginx/my.test.tw.access.log main;
error_log /var/log/nginx/my.test.tw.error.log warn;
ssl_certificate my.test.tw.crt;
ssl_certificate_key my.test.tw.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://mytest;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}


https://blog.dtask.idv.tw/Nginx/2018-07-31/

https://www.nginx.com/blog/announcing-udp-load-balancing/

2018/11/02

之前寫過一篇用obs + nginx 來進行串流
最近找到另一個srs 看來也方便的
記錄一下
以下是官方的安裝步驟

Step 1: get SRS
git clone https://github.com/ossrs/srs && cd srs/trunk

Step 2: build SRS, Requires Centos6.x/Ubuntu12 32/64bits, others see Build(CN,EN).

./configure && make

Step 3: start SRS
./objs/srs -c conf/srs.conf

srs.conf 可依需求進行修改

測試的結果在 linux mint 19 x64 上無法編譯成功
在ubuntu 16.04 x64 及 centos 7 x64 是ok的
ubuntu 18.04 沒試

如果要在centos 7上安裝要補一下 rpm

yum install -y gcc gcc-c++ make patch unzip sudo

再來依上述的步驟執行即可
不過要注意的是
執行後會在几器上開三個port 1935 1985 8080
記得用iptables 限制一下
尤其是8080 是web介面

執行完後利用obs把視訊串流上來
步驟參考之前的po文 要改的是串流的url如下圖
改一下server的ip及相關設定




再來使用vlc觀看

vlc rtmp://1.2.3.4/live/livestream

live及livestream對照上面進行修改

目前測試起來 server 上 srs 的 cpu 吃不到 1 %

但obs的串流相當吃cpu 尤其是解析度高的時候

2018/03/09

今天測了一下obs及nginx nginx-rtmp-module
obs是一個相當方便的跨平台錄影及產生live streaming的軟体
但是並沒有stream server的功能
一般都是把產生的stream丟到 youtube 或其他的stream server上
但如果是在內部使用 就必須自行架設stream server
網路上找到的資料大多是 obs + nginx + nginx-rtmp-module
記錄一下安裝及測試的流程
先安裝nginx
這次使用的是 linux mint ldme2
再來

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

wget http://nginx.org/download/nginx-1.13.1.tar.gz

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

解開後編譯安裝

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
$ make
$ sudo make install

啟動 nginx 看看有沒問題

$ sudo /usr/local/nginx/sbin/nginx

修改config 以支援 rtmp

在 /usr/local/nginx/conf/nginx.conf 下方加上以下程式碼


rtmp {
        server {
                listen 8080;
                chunk_size 4096;

                application live {
                        live on;
                        record off;
                }
        }
}

重啟 nginx

$ sudo /usr/local/nginx/sbin/nginx -s stop
$ sudo /usr/local/nginx/sbin/nginx

接下來在windows 裝好obs後

以串流桌面為例(含音訊)

在來源選擇顯示器擷取
















建立新來源














































再來設定把 stream 丟到之前設好的server















假設 server ip 192.168.12.74 port 要與config 設定的相同 金鑰設定為 test









設好後就可以開始串流















如果出現以下畫面且無錯誤訊息 就表示成功串流出去了

























用VLC進行觀看

vlc rtmp://192.168.12.74:8080/live/test


如果來源有多個可以同時設定 同時擷取

https://obsproject.com/
https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/