自架 WordPress 上傳媒體發生 HTTP 錯誤

WordPress 上傳檔案大小很多人都了解,透過更改 php.ini 可以讓上傳的檔案大一點,不過有時候卻發現檔案大小不超過限制,上傳又會出現 HTTP 錯誤,那是怎麼回事呢?


既然都說是 HTTP 錯誤,就來看一下網頁伺服器錯誤。
cat /var/log/nginx/error.log | grep error

問題顯而易見,太大放不進去。

使用自己習慣的編輯工具更改 nginx 設定檔即可,例如 vi /etc/nginx/nginx.conf,並在 http{ } 內新增 client_max_body_size 20M;


nginx -t 測試一下沒問題就能 restart nginx。

Google Dns 與 Cloudflare 新增 Minecraft SRV 紀錄

雖然前陣子有發文如何找出 SRV 真實 IP,不過總是要來個,那麼如何新增 SRV 紀錄呢?
現在常見的 DNS 代管蠻流行的就屬於 CloudFlare,而我因為工作因素也有接觸到 Google DNS,CloudFlare 的 SRV 較為淺顯易懂,一個蘿蔔一個坑,那邊要填入東西就填入,Google DNS 就沒那麼友善了。

CloudFlare 示範:
畢竟 SRV 終究要指向一個真實的位置,所以要先在上面設定一個 A 與 AAAA 紀錄,不過我相信台灣多數是沒有 IPv6 可用,所以新增 A 紀錄即可

假設我希望玩家可使用 crlab.com.tw 連上我的創世神伺服器,而其實 crlab.com.tw 是指向某個隱藏好的 A 或 AAAA 紀錄,例如可能是 XDXD.crlab.com.tw 那麼就先新增一個相關紀錄。

Name 例如本次的 XDXD,IPv4 就填寫主機的 IP,後面有個橘色雲記得關閉,之後按下綠色的 Add Record,完成後就能新增 SRV 紀錄。

Service name 填寫 _minecraft,Protocol 預設的 TCP,Name 因為我想要使用 crlab.com.tw 所以就填寫 @,假設想要玩家使用 server.crlab.com.tw,那麼 Name 就要填寫 server。
接下來就是填寫目標主機與 Port。

第一與第二維持 1 即可,第三個假設伺服器使用 25565 就填寫 25565,Target 就填寫要指向的目標,例如 XDXD.crlab.com.tw。
接下來玩家就能透過 crlab.com.tw 連線到伺服器。

Google DNS 示範:
其實 Google Dns 的 SRV 設定挺不友善的,不像 CloudFlare 有指引,不過其實記得那邊該填寫什麼就好。

提示只有 0 1 587 這誰知道呢?其實多設定記一下就知道就好,概念上也是相同,需要有個真正的 A 或 AAAA 紀錄,接下來新增 SRV 紀錄來對應就好。


DNS 名稱就填入 _minecraft._tcp, SRV 紀錄則是 0 0 Port位置 目標主機,例如:0 0 25565 host.crlab.com.tw

找出 Minecraft 伺服器真實 IP

找出伺服器 IP 其實挺簡單的,除了一般常見 DNS 設置 A 與 AAAA 紀錄外,現在更流行於創世神伺服器的則是 SRV,雖然能理解為了避免被找出真實 IP 而被攻擊,不過還是來教簡單的方式找出真實 IP。

一般而言常見的 A 與 AAAA 記錄透過簡單的 Ping 或是 nslookup 即可輕鬆找出真實 IP,雖然 Ping 伺服器不一定會有回應,不過當你 Ping 某機器時他的 IP 就會被透露出來,這很多人都會也沒什麼技術上的難度。

IPv4

IPv6

不過有些情況下就會遇到 nslookup 查不到,但是 Minecraft 又能連上該伺服器,基本上就能判定該伺服器使用 SRV 紀錄。

不用安裝軟體,Windows 與 Linux 和 macOS 都有內建 nslookup 指令,使用 nslookup 指令再透過一些參數即可輕鬆找出真實位置。

開啟命令提示字元或是終端機,輸入 nslookup 之後再輸入 set type=srv,即可切換為查詢 SRV 紀錄。


之後便能輸入目標來查詢,一般而言假設連上伺服器的位置是:facebook.com,那麼你需要在前端加入 _minecraft._tcp.,也就是 _minecraft._tcp.facebook.com,所以把整段 _minecraft._tcp.facebook.com 打在剛剛開的且設定過查詢目標的 nslookup 就能查出 SRV 紀錄。

真實目標不會是 IP,可能是一個被隱藏好的 A 與 AAAA 紀錄,不過無所謂,只要 A 或 AAAA 紀錄顯示出來,就能簡單的 Ping 一下或是透過 nslookup 查詢真實 IP。

剛剛的 nslookup 可以再輸入 set type=a 或是 set type=aaaa,不過以台灣來說超過 95% 以上使用 set type=a 即可,再輸入剛剛查詢到的真實目標,即可找出真實 IP。

簡單測試一下巴哈我的世界上的一些伺服器。

當然 _minecraft._tcp. 這段是可以更改的,不過透過軟體 wireshark 撈一下 Minecraft 連線時的封包也能簡單找出紀錄,有機會再來教。

至於找出真實 IP 可以做什麼,難不成是攻擊?當然不是,有了主機確切的 IP,就可透過 traceroute 來檢視連線至伺服器的路徑有無異常,或是用來更嚴苛的用途,例如某伺服器可能打著我們使用高級的 OVH 主機,查到之後卻發現原來不過就是個 hinet 的位置,那麼該伺服器的說法就有疑慮。

看延遲大約 230ms 上下,可猜測該伺服器幾乎不可能在國內,若在遊戲中遊玩可能會感受些許的延遲。

查看路徑,確認伺服器應該是在加拿大。

查 IP 資料可見是 OVH 的主機。

所以找出真實 IP 是有其必要性,對於玩家找電信除錯或是回報路由問題,電信業者也會要求提供 traceroute 資料,如果不知道真實 IP 怎麼去測試呢?

WordPress Nginx rewrite 規則

網路上雖然蠻多教學都會教你把請求轉到 index.php,看似簡單不過還有些地方要注意,wp-admin 可能會導致 404 發生,3 行簡單的做法就能正常運作囉。
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

Let’s encrypt 免費 SSL 憑證教學

雖然這篇文來的有點遲,不過還是不免俗的簡單介紹一下免費的憑證,Let’s Encrypt 是由多家大型公司為推廣 HTTPS 而成立的一個組織,網路上已經有蠻多教學文章了,不過個人認為 EFF(電子前哨基金會)推的 certbot 最為好用,至於網路上 SSL For Free,個人是不太信任這種服務就是了。

Certbot 的安裝很簡單先使用 dnf 指令安裝就好
dnf install certbot
之後就能下指令取得要的憑證
certbot certonly

繼續閱讀 “Let’s encrypt 免費 SSL 憑證教學”

Nginx 錯誤 Address already in use 解決

原本 dnf install nginx 用得好好的,也不知道是怎樣,就想加一些 module,試了一下 Google 的 PageSpeed Module,他有提供個自動化安裝腳本,這才想說不對,慘慘慘總之後來先是 rm -rf 自動化腳本安裝的 Nginx,先來試試 start nginx,問題浮現啦 Orz。

看一下錯誤紀錄 Address already in use,當然也想說那很簡單先 stop,這才驚覺不對好像 stop 不了,我的網站還能連。

繼續閱讀 “Nginx 錯誤 Address already in use 解決”

Fedora 安裝 Fail2ban 防止暴力破解 ssh

Fail2Ban 是非常多人使用的程式,可自動化 Ban 暴力破解 SSH 或是其他服務的使用者 ip,筆者之前是在 VPS CentOS 上安裝,其實還蠻簡單的,不過沒想到轉 Fedora 卻發現好像有點問題,仔細看一下問題也不大,只要會看錯誤都可以輕鬆解決。

Fedora 25 預設是使用 Firewalld 不過個人覺得 iptables 比較好用,所以就先停用。
systemctl disable firewalld.service
systemctl stop firewalld.service
之後安裝 iptables
dnf install iptables-services -y

安裝完成後可透過
systemctl enable iptables
systemctl start iptables
來啟動 iptables

iptables 基本操作使用可參閱以下文章:
How To Set Up a Basic Iptables Firewall on Centos 6
繼續閱讀 “Fedora 安裝 Fail2ban 防止暴力破解 ssh”

Nginx 多網站配置

網頁伺服器環境的建置可以先參閱先前的文章:在 Fedora 25 安裝 Nginx、PHP-FPM、MariaDB(LEMP)

當你的主機裝好網頁伺服器,你總會想難道一台主機只能一個網站嗎?當然不是,一台主機是能夠架設非常多網站的,這稱作 Virtual Host,任何現代網頁伺服器都支援這功能,至於怎麼做呢?筆者當然一步步帶你囉。

繼承先前文章,主機與伺服器環境準備好後就能開始架站,為了方便管理可以像筆者我一樣為 Nginx 網頁伺服器建立一個設定檔資料夾,讓不同網站的設定檔放在同一個資料夾方便管理。
先下這行指令
mkdir /etc/nginx/vhost
在 Nginx 的設定資料夾內新增一個名為 vhost 的資料夾
之後使用文字編輯軟體例如 Nano、Vi⋯⋯等,編輯 Nginx 的設定檔
vi /etc/nginx/nginx.conf

新增include /etc/nginx/vhost/*.conf;在 http { 這段內 }。

繼續閱讀 “Nginx 多網站配置”

在 Fedora 25 安裝 Nginx、PHP-FPM、MariaDB(LEMP)

LEMP 算是一個簡稱,使用 Linux 作業系統、Nginx 網頁伺服器、PHP-FPM 動態語言、MariaDB(MySQL)資料庫,網路上其實挺多一鍵安裝包的,不過個人偏好自己來,第一在自己來的過程中可以學習,第二也可以避免一鍵安裝包可能的風險,畢竟你也不清楚是不是包了什麼,LEMP 速度快穩定性高,雖然目前網頁伺服器的市佔率還是 Apache 最高,不過 Nginx 的輕巧快速與設定簡單易懂,相信值得一試。

本次使用 Fedora Server 25 作為示範,系統安裝就不再贅述,承租 VPS 都能輕易的選擇 Fedora 做為系統。

進到系統內先把系統更新吧
dnf update -y

更新完成後先來設定一下系統,使用個人習慣的編輯軟體去更改設定,例如 nano、vi⋯⋯等
繼續閱讀 “在 Fedora 25 安裝 Nginx、PHP-FPM、MariaDB(LEMP)”