2024年3月15日,因為不想忘記前面關於Nginx反向代理Photoprism的內容。這裡記錄下,如果能幫助到點選到這篇部落格的人就更好了。
主要分為三個部分,第一個部分是部署Photoprism,第二個部分是Nginx反向代理,第三個部分是https設定
前置條件(沒有的話,就不要往下看了,或者先稍微瞭解下再往下看)
- 瞭解linux系統命令,知道是什麼意思
- 瞭解vim或者其他編輯器(如果你沒有圖形介面的話)
- 瞭解ip,埠等計算機網路相關內容
- 一個解析好的域名(反向代理需要用)
部署Photoprism
這一塊官方有很詳細的教程,這裡我就簡單把命令貼一下。
sudo apt install docker // 安裝docker
wget https://dl.photoprism.app/docker/docker-compose.yml // 下載photoprism映象配置檔案
docker compose up -d // 啟動服務
輸入上面命令其實就結束了,如果你有圖形介面的話,可以 瀏覽器輸入http://localhost:2342/
應該就能看到介面了。如果你只想在區域網或者自己電腦上用那到這裡就可以結束了
Nginx反向代理
Nginx如果你想研究的話不建議百度之類的瞎看,去官網說明之類的地方看一看
Nginx服務啟動
sudo apt-get install -y nginx // 安裝Nginx
sudo systemctl enable --now nginx // 開機自啟動Nginx
反向代理(http)
反向代理需要一個解析好了的域名,解析域名這塊騰訊雲伺服器有很多教程,解析完後再往下走。
新建一個Nginx配置檔案,配置檔案的名稱自己喜歡就行, 這裡是“photoprism.conf",但是字尾要一樣
vim /etc/nginx/conf.d/photoprism.conf
把以下內容複製進去
server {
listen 80;
server_name <你的域名>; # abc.com之類的
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:2342; # 你代理的頁面,Photoprism預設的就是這個。不需要改動
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然後重新啟動兩個服務
sudo systemctl restart nginx
docker-compose up -d
現在你就可以在任何電腦輸入你的域名,訪問你的照片庫,當然目前還是個http裸奔,不介意的話其實也沒事。駭客什麼的應該也看不上我存的內容
反向代理(https)
這個是重頭戲了!
這個是重頭戲了!
這個是重頭戲了!
先把需要的東西準備好,ssl證書。如果你也是用的騰訊雲的話,可以按照下面的步驟操作
- 在控制檯的搜尋欄直接搜尋"ssl證書"
- 我的證書->申請免費證書
- 成功之後,下載Nginx版本就行
把這個證書解壓後檔案全部傳到伺服器上,推薦Winscp工具,怎麼使用靠你自己去調查了。
接下來就是Nginx配置檔案設定
sudo vim /etc/nginx/conf.d/photoprism.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name <你的域名>;
client_max_body_size 500M;
# With SSL via Let's Encrypt
# 對應的ssl證書, 壓縮包解壓出來有四個檔案,包含下面兩個字尾的就行
# 記得路徑改成你的證書所在路徑,一般會放到/etc/nginx下面。其他路徑我沒進行嘗試,應該也沒問題的
ssl_certificate /etc/nginx/xxxxxx.crt;
ssl_certificate_key /etc/nginx/xxxxxx.key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:2342;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 500M;
}
}
如果你重啟Nginx的時候遇到了下面的問題
Job for nginx.service failed because the control process exited with error code.
那就用下面的命令檢視日誌
sudo systemctl status nginx
如果日誌顯示下面語句
Mar 15 13:41:08 VM-4-6-ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Mar 15 13:41:08 VM-4-6-ubuntu nginx[584795]: nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/sites-enabled/default:21
Mar 15 13:41:08 VM-4-6-ubuntu nginx[584795]: nginx: configuration file /etc/nginx/nginx.conf test failed
進入錯誤提到的地方,也就是這個/etc/nginx/sites-enabled/default
。
sudo vim /etc/nginx/sites-enabled/default
變更成下面的樣子,就是改成443埠,並且新增ssl認證
server {
#listen 80 default_server;
#listen [::]:80 default_server;
# SSL configuration
#
# 最開始預設的是80埠,為了ssl,我們開啟443埠。把80的註釋掉了了
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
# 這裡就是前面提到的ss證書的第二個位置
ssl_certificate /etc/nginx/liulustore.com_bundle.crt;
ssl_certificate_key /etc/nginx/liulustore.com.key;
# 這之後的內容都不需要變更
完成之後記得重啟兩個服務
sudo systemctl restart nginx
docker-compose up -d
到這裡就全部結束了