體積很小的nginx_php7.4_docker_在unraid中的配置


體積很小的nginx_php7.4_docker_在unraid中的配置

轉載注明來源: 本文鏈接 來自osnosn的博客,寫於 2021-04-01.

當需要傳個大文件給朋友的時候,可選辦法挺多,但都依賴第三方。
比如,發郵件(大文件作為附件),用xx網盤傳遞,用qq離線文件,群文件,微信直接發送。

家里的寬帶已經有公網ipv6了。如果你有公網ipv4更好。
現在多一個選擇:把文件放家里,共享出去,讓朋友方便的時候自己下載。
這也有許多方案,比如裝個nextcloud之類的雲盤。裝個Linux自己配置一個webserver。

這里介紹一個方案。使用docker,快速搭建一個webserver。web的路徑指定為unraid的某一個共享文件夾。
你的 unraid 的 docker 中,有個體積很小的 nginx+php7.4 ,配置也很簡單,安全性還行。
(鏡像包56MB,安裝完占169MB。)

如果你用的不是unraid。但能裝docker。此文也能參考。
只是web的路徑,要找一個方便訪問的路徑映射。

安裝 docker 鏡像 Linuxserver/nginx

  • 在 unraid 的 APPS 中搜索 nginx。能搜到兩款。
    linuxserver 只有50多MB。另一款 Binhex 有200多MB,體積有點大。
  • 安裝 linuxserver 的版,只有50多MB。
    安裝時修改一下網站的端口,把80,443改為別的口,防止和已有的其他應用沖突。比如改為880,8443。
    說明/描述什么的,自己看着修改。
    其他的暫時默認,后續可以隨時更改。

配置 docker 鏡像 Linuxserver/nginx

  • 在 docker 管理界面,找到這個 Linuxserver/nginx ,編輯它。
  • 在最下面添加一個路徑映射,點擊+ Add another Path, Port, Variable, Label or Device
    選擇 Config Type:=Path
    Name:隨意
    Container Path:容器內路徑為/config/www/share, (nginx的網站root為/config/www)
    Host Path:容器外部實際路徑為/mnt/user/isos/share, (unraid共享文件夾為/mnt/user/isos)
    Default Value: 留空
    Access Mode: = Read Only 只讀
    Description: 隨意
  • Host Port 1: = 3380 (Container Port: 80)
  • Host Port 2: = 33443 (Container Port: 443)
  • 如果你的unraid的ipv6已經是eui64。Network Type: 選擇 Bridge, HostCustom: br0 都行。
    不知道區別,就選 Bridge 吧。
    • 使用 unraid 的 IP 訪問這個 webserver。
      http://[unraid的ipv4或ipv6]:3380/
      https://[unraid的ipv4或ipv6]:33443/
  • 如果你的unraid的ipv6不是eui64。而你又不知道怎么設置。
    那,nginx 的 docker 的 Network Type: 選擇 Custom: br0
    高級視圖編輯中,Extra Parameters:加入參數
    --sysctl net.ipv6.conf.all.disable_ipv6=0 --sysctl net.ipv6.conf.eth0.use_tempaddr=2
    這樣,這個docker就會獲得一個內網的ipv6,和一個eui64的公網ipv6。
    • 使用 docker 的 IP 訪問這個 webserver。
      http://[docker的ipv4或ipv6]:3380/
      https://[docker的ipv4或ipv6]:33443/
  • 最后,
    把對應的IP (unraid 或 docker 的 IP),
    對應的端口 (3380 或 33443),
    在你的路由器上,ipv4映射出去,ipv6轉發出去,就行了。
    參考【設置openwrt路由器的防火牆_允許從外網訪問_ipv6服務_ipv4端口映射
  • 為了方便朋友訪問,你可以再配置一個ddns。

效果

  • 比如你存了個文件 abc.rarisos/share ,就可以通過
    http://你的IP:端口1/share/abc.rar 下載到這個文件。
    https://你的IP:端口2/share/abc.rar 下載到這個文件。
  • 你保存在 unraid 共享目錄 isos/share 的文件,都可以通過這個docker提供的網站訪問。並且支持php腳本。
  • 安全性:最大隱患,就是支持php腳本文件。所以這個目錄中,盡量不要放自己不知道的php文件。
    如果你懂的話,直接修改nginx的配置,禁用php,就沒問題了。
  • 另外,這個網站還可以提供一個簡單的密碼保護。 通過給docker一個環境變量FILE__PASSWORD來設置。或者直接去修改nginx的配置文件。

給這個網站添加簡單的賬號保護 auth_basic

  • 找到這個nginx的docker,點擊 Console 打開終端命令行。
cd /config/nginx
htpasswd  password.htpw  myuser (回車后,輸入密碼)
vi site-confs/default
   #在 location / { } 和 location ~ \.php$ { } 分別加入兩行,
   auth_basic "welcome my web";
   auth_basic_user_file  /config/nginx/password.htpw;
## 這是一個完整的例子的參考,沒有全站設置賬號。僅對share目錄設置了賬號保護。
server {
   listen 80 default_server;
   listen 443 ssl;
   root /config/www;
   index index.html index.htm index.php;
   server_name _;
   ssl_certificate /config/keys/cert.crt;
   ssl_certificate_key /config/keys/cert.key;
   client_max_body_size 0;
   location /share {
      auth_basic "my share";
      auth_basic_user_file  /config/nginx/password.htpw;
      location ~ \.php(?:$|\/) {  # 這個要寫,否則php腳本沒密碼保護
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_index index.php;
         fastcgi_param PATH_INFO $fastcgi_path_info if_not_empty;
         include /etc/nginx/fastcgi_params;
      }
   }
   location / {
      try_files $uri $uri/ /index.html /index.php?$args =404;
   }
   location ~ \.php(?:$|\/) {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      # With php5-cgi alone:
      fastcgi_pass 127.0.0.1:9000;
      # With php5-fpm:
      #fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param PATH_INFO $fastcgi_path_info if_not_empty;
      include /etc/nginx/fastcgi_params;
   }
}
  • 輸入exit關閉終端,重啟restart nginx的docker,即可。
  • 這時候,訪問這個網站,就需要輸入賬號密碼了。

其他

  • 再裝個MySQL或者MariaDB的docker配合。用這個nginx建個網站,也是可以的。
    我沒這個需求,就不折騰了。
  • 或者,再裝個tomcat的docker,或者flask的docker。用這個nginx做前端轉發,也很好。

其他docker


轉載注明來源: 本文鏈接 來自osnosn的博客.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM