冷白色-記憶衰落的一角
我有強烈可怕的健忘問題,這是幫助自己記憶的網站,記憶了許多個人的事. 收錄許多資訊,防止資料不見或網站消失,供查找留存用。 如:筆記,訊息,記錄,生活,網路小品,趣味之事.... 希望我不要連整個Blog也一起忘記.
2026年7月20日 星期一
Windows Server因為Windows update後,導致自動重啟或是自動重新開機
2026年6月4日 星期四
使用NSSM將Nginx程式轉為Windows服務。(通用其他程式)
NSSM (Non-Sucking Service Manager) 的主要用途正如你所聽到的:它可以把任何傳統的執行檔(.exe)或腳本(.bat、.cmd、.vbs、PowerShell、Python 等)封裝並註冊成 Windows 服務(Windows Service)。
在預設情況下,Windows 無法直接將一般的程式當作服務來執行,因為標準的 Windows 服務必須遵循特定的 Service Control Manager (SCM) 通訊協定。如果直接用系統指令硬把普通 .exe 註冊成服務,啟動時通常會跳出「服務未回應控制要求」的錯誤。
NSSM 就是為了解決這個痛點而生的「代理人(Proxy)」。
為什麼要使用 NSSM?(核心功能)
1. 讓普通程式具備「服務」的特性
開機自動背後執行: 即使沒有使用者登入 Windows 系統,程式也會在背景自動啟動。
權限控管: 可以指定特定的系統帳戶(如
LocalSystem)或特定的網域/本地使用者帳戶來執行該程式。
2. 強大的崩潰自動重啟機制 (Auto-Restart)
這是 NSSM 最受工程師青睞的功能。如果你的程式因為 Bug、記憶體溢位或其他原因不正常關閉(Crash),NSSM 會自動監測到並立刻重啟該程式。它還內建了「重啟延遲」設定,防止程式陷入無限快速重啟的死迴圈。
3. 完美的 I/O 重新導向 (日誌記錄)
一般的控制台程式(Console Application)運行時會有輸出畫面(stdout 和 stderr)。變成服務後,這些畫面會消失。NSSM 可以幫你把這些原本會顯示在黑畫面的文字,即時寫入到指定的 .log 文字檔中,方便日後查修。
4. 優雅的關閉機制 (Graceful Shutdown)
當你停止服務時,NSSM 不會粗暴地直接殺掉(Kill)你的程式,而是會循序漸進地發送作業系統關閉訊號(如 WM_CLOSE、WM_QUIT),讓你的程式有時間處理未完的資料、關閉資料庫連線後才乾淨地結束。
常見的應用場景
在企業 IT 環境或開發流程中,NSSM 常被用來封裝以下類型的程式:
Web 服務/API 伺服器: 例如用 Python (Flask/FastAPI)、Node.js、Go 語言寫好的後端程式,需要 24 小時在 Windows 伺服器上穩定運行。
自動化腳本: 定時執行的批次檔(
.bat)或 PowerShell 監控腳本。開源工具: 許多從 Linux 移植過來、沒有原生 Windows 服務介面的開源工具(例如早期的 Prometheus Exporter、某些資料庫轉發工具)。
如何使用 NSSM?(極簡步驟)
NSSM 最棒的地方在於它同時提供了圖形介面 (GUI) 和命令列 (CLI),操作非常直覺。
使用圖形介面安裝服務:
下載並解壓縮 NSSM。
打開命令提示字元 (CMD) 並切換到 nssm 所在目錄,輸入:
nssm install 你的服務名稱此時會跳出一個 GUI 視窗:
Path: 選擇你要執行的
.exe或直譯器(如python.exe)。Startup directory: 程式運行的工作目錄(通常會自動帶入)。
Arguments: 程式需要的參數(例如
runserver 0.0.0.0:8000或腳本路徑)。在 I/O 頁籤可以設定 Log 輸出路徑。
點擊 Install service 就完成了!接下來就可以去 Windows 的
services.msc(服務管理面板)裡面看到它,並設定成自動啟動。
常用命令列指令:
如果你想透過指令快速管理,它也支援:
建立服務: nssm install 你的服務名稱
刪除服務:
nssm remove 你的服務名稱啟動服務:
nssm start 你的服務名稱停止服務:
nssm stop 你的服務名稱編輯現有服務:
nssm edit 你的服務名稱(會再次跳出 GUI 視窗讓你修改設定)
總結來說,NSSM 是一個非常輕量、穩定且完全免費的工具,是 Windows 系統管理員與開發者在處理背景程序時的必備神器。
======================================================
如果你在命令提示字元(CMD)中輸入了:
這時候系統會跳出 NSSM 的圖形化設定視窗(NSSM Service Installer),讓你填寫詳細的執行路徑與參數。
因為 Nginx 官方的 Windows 版本本身就只是一個普通的控制台程式(Console Application),沒有內建 Windows 服務的控制代碼,所以用 NSSM 來封裝它是非常標準且常見的做法。
請按照以下步驟在跳出的視窗中進行設定:
1. 欄位設定指引
在跳出的 Application 頁籤中,請填入以下資訊:
Path (目的程式路徑): 點擊右側的
...按鈕,找到你解壓縮 Nginx 的目錄,選取nginx.exe。範例:
C:\nginx\nginx.exeStartup directory (啟動工作目錄): 當你選好 Path 之後,這個欄位通常會自動帶入。請確保它是
nginx.exe所在的資料夾。範例:
C:\nginx⚠️ 注意: 這個欄位非常重要,因為 Nginx 啟動時需要去相對路徑讀取conf/nginx.conf檔案,如果工作目錄弄錯,服務會啟動失敗。Arguments (啟動參數): 這裡留空即可(通常不需要填寫,預設就會直接啟動)。
2. 建議進階設定:日誌重新導向 (I/O)
雖然 Nginx 本身就會寫入 logs/error.log,但如果 Nginx 因為主設定檔(nginx.conf)寫錯而導致「根本連開都開不起來」時,Nginx 自己的 Log 是不會有紀錄的。
建議切換到 I/O 頁籤:
Output (stdout): 設為
C:\nginx\logs\nssm_stdout.logError (stderr): 設為
C:\nginx\logs\nssm_stderr.log
這樣一來,如果服務啟動失敗,你可以直接來這兩個檔案看 Windows 拋出的最底層錯誤訊息。
3. 完成與啟動服務
欄位填妥後,點擊視窗下方的 Install service 按鈕。
看到彈出
Service "nginx" installed successfully!的成功訊息後,代表服務已經註冊成功。啟動 Nginx: 此時服務雖然註冊了,但預設還沒開始執行。請在 CMD 輸入以下指令來啟動它:
nssm start nginx(或者你可以按
Win + R輸入services.msc打開 Windows 服務管理員,找到nginx點選「啟動」,並確認啟動類型為「自動」)。
💡 日後如何維護?
變成 Windows 服務後,當你修改了 nginx.conf 設定檔,請不要直接去點 nginx.exe,也不要用 nginx -s reload(因為那會脫離 NSSM 的控制),請統一使用 NSSM 的指令:
重新啟動服務(應用新設定):
nssm restart nginx停止服務:
nssm stop nginx修改 NSSM 設定: 如果路徑填錯了,輸入
nssm edit nginx可以重新打開圖形視窗修改。移除服務: 如果以後不想用了,輸入
nssm remove nginx即可乾淨刪除。
https://drive.google.com/file/d/1NOaoX1tJyoeHKnQbI8vD3CbsgT7Jsoh-/view?usp=drive_link
https://drive.proton.me/urls/MV7M5ARMRG#GN6n4oWZavDG
2026年6月3日 星期三
Nginx漏洞修補與升級方式說明(Windows)
(如果 Nginx 完全沒有回應,可以使用 taskkill /f /im nginx.exe 強制結束行程)。若您有將 Nginx 註冊為 Windows 服務(如使用 WinSW 或 NSSM),請至 Windows「服務」視窗中將其停止。
2. 解壓新版本
將下載好的新版本(例如 nginx-1.30.1.zip)解壓縮到新的目錄(例如 C:\nginx-1.30.1\)。
3. 遷移設定檔
將步驟二備份的 conf/ 目錄內的所有設定檔(特別是 nginx.conf),複製並覆蓋到新版 C:\nginx-1.30.1\conf\ 目錄中。
4. 測試新版本設定檔是否相容
從 1.19.6 跨越到 1.30.x 版本跨度較大,某些語法可能有所變更。在啟動前,請在 CMD 切換到新目錄並執行測試:
cd C:\nginx-1.30.1
nginx.exe -t
若顯示
syntax is ok和test is successful:代表設定檔相容,可以正常使用。若報錯:請根據錯誤訊息調整
nginx.conf中不再支援的舊語法。
5. 啟動新版 Nginx
測試成功後,直接啟動新版 Nginx:
start nginx
(若原本有使用 Windows 服務工具如 WinSW,請記得將工具內的執行路徑更新為新版的 C:\nginx-1.30.1\nginx.exe,然後啟動該服務)
但是
Windows 綠色版唯一的「小缺點」與維運解法
雖然它是免安裝的,但這也意味著:當 Windows 伺服器重開機時,Nginx 預設是不會自己啟動的。 在企業的 Windows Server 生產環境中,系統管理員通常不會手動去雙擊 nginx.exe,而是會使用第三方工具(最常見的是 WinSW 或 NSSM),將這個綠色版的 nginx.exe 包裝註冊成「Windows 系統服務」。
這時候就要提到NSSM的應用。
2026年5月14日 星期四
VMware VCenter 6.7設定Log Server失敗
你現在應該改查:
SSH登入VMware Vcenter
shell 進入設定。
1. 查看 rsyslog 狀態
systemctl status rsyslog
如果沒跑:
systemctl restart rsyslog
代表:
rsyslog 設定檔語法是正常的
所以問題不是:
- config syntax
- forwarding rule
- URI 格式
而是:
rsyslog 啟動階段失敗
通常剩下幾種可能:
- PID file 問題
- socket 被占用
- 權限問題
- module 載入失敗
- log file 無法寫入
- disk 滿了
- SELinux/AppArmor
- systemd limit/cache 問題
現在要直接看 rsyslog 真正 stderr。
請執行
rsyslogd -dn
注意:
-
-d= debug -
-n= foreground
它會直接噴真正錯誤。
你的問題是:
error reading pid file, cannot start up
代表:
rsyslog 的 PID file 壞掉或卡住了
通常是:
- 上次 crash
- abnormal shutdown
- service 沒正常結束
- PID file 殘留
- 權限錯誤
導致 rsyslog 認為:
「已經有另一個 rsyslog 在跑」。
立刻處理
先找 PID file:
find /run /var/run -name "*rsyslog*.pid"
通常會看到:
/var/run/rsyslogd.pid
確認目前沒有 rsyslog process
ps -ef | grep rsyslog
正常情況應該只剩 grep 自己。
如果沒有真正 rsyslogd process:
改名或刪除 PID file(建議改名)
例如:
mv /var/run/rsyslogd.pid /var/run/rsyslogd.pid.bak
rm -f /var/run/rsyslogd.pid
reset systemd failed state
systemctl reset-failed rsyslog再啟動
systemctl start rsyslog查看:
systemctl status rsyslog
查看服務,終於正常 active (running)回到
VMware vCenter Server VAMI (:5480)
進入 Syslog:點選左側選單最下方的 「Syslog」 索引標籤。
設定轉送:在「轉送組態」(Forwarding Configuration) 區塊,點擊 「設定」(Configure)。
總算是沒有下面的錯誤訊息了,檢查Log Server,也確認有收到Log。
設定成功。
錯誤訊息:Error in method invocation _failure() missing 1 required positional argument: 'err'
因為Nessus 弱點掃描,而將Windows關閉停用 SSL 2.0 , SSL 3.0 和 TLS 1.0, 1.1,並強制使用 TLS 1.2處理(用 IIS Crypto 工具處理法)
工具:
IIS Crypto
操作
建議直接:
-
勾:
- TLS 1.2
-
取消:
- SSL 2.0
- SSL 3.0
- TLS 1.0
- TLS 1.1(建議)
- 3DES
然後:
- Apply
- Reboot
IIS Crypto 是安全且在業界被廣泛信賴的工具。
在系統管理與資安稽核的領域中,它幾乎是處理 Windows Server SSL/TLS 設定的「標準配備」。雖然它是第三方軟體,但其運作機制非常透明且單純。
以下從幾個維度幫你分析它的安全性與可靠性:
1. 運作機制:它只是個「註冊表包裝器」
IIS Crypto 本身並不包含任何加密演算法,也不會安裝任何系統服務或後端程式。
本質: 它只是一個圖形化界面(GUI),幫你修改我們之前討論過的那些 Schannel 註冊表路徑(
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\...)。不常駐: 設定完、按下 Apply 並重啟後,你可以直接刪除這個
.exe檔案,它不會留在系統中執行。
2. 為什麼專業人士愛用它?
避免人為錯誤: 就像你之前糾結要寫
168還是168/168,手動改 Registry 很容易打錯字。IIS Crypto 內建的名稱都是經過微軟官方規範驗證過的。Best Practices 模板: 它的「Best Practices」按鈕是根據當時主流的安全標準(如 PCI DSS、TLS 指引)定義的,能快速關閉已知的弱點(如 SSL 3.0, RC4, 3DES)。
數位簽章: 該軟體由 Nartac Software 提供,官方下載的版本通常帶有正確的數位簽章,確保程式碼未被篡改。
3. 使用它有哪些「風險」?
工具本身是安全的,但「設定的內容」可能會帶來副作用。這並非工具的錯,而是加密政策改變後的必然結果:
遠端桌面 (RDP) 斷線風險: 如果你是在遠端操作,且不小心關閉了所有與客戶端相容的加密套件(例如只開 TLS 1.2,但你的連線端電腦太舊),重啟後你可能會連不進伺服器。
應用程式相容性: 某些舊版的資料庫連接程式(如舊版 SQL Client)或舊型設備(如舊型影印機的 Scan to Folder)可能只支援 TLS 1.0 或 3DES。一旦你用 IIS Crypto 停用它們,這些連線就會中斷。
4. 給你的安全建議
如果你還是擔心,可以採取以下步驟:
官方下載: 務必只從
下載。Nartac Software 官網 先備份註冊表: 在執行任何變更前,先匯出整個
SCHANNEL註冊表路徑做備份。先在測試環境執行: 如果你有測試機,先跑一次,確認 RDP 與應用程式服務一切正常。
檢查工具: 如果你在極度嚴苛的環境,可以用
Strings工具查看它的內部文字,你會發現它真的只是在呼叫註冊表機碼。
總結: 對於要修復 Nessus 掃出的 SWEET32 與 SSL v2/v3 弱點,IIS Crypto 是最安全且最有效率的選擇,比手動一個一個改 Registry 要可靠得多。
2026年4月29日 星期三
因為Nessus 弱點掃描,而將Windows關閉停用 SSL 2.0 , SSL 3.0 和 TLS 1.0, 1.1,並強制使用 TLS 1.2處理(regedit處理法)
通常弱掃做到這點了,都會順便關掉TLS 1.0和TLS 1.1,避免多花一次工。
這項弱點(主要是為了防範 POODLE 攻擊)在現代安全標準中是非常基礎且必要的修復。SSL 2.0/3.0 早已被證明存在嚴重的加密缺陷,攻擊者可以利用這些漏洞進行中間人攻擊 (MITM) 並解密通訊內容。
由於 Windows Server 2012 R2 的預設設定較舊,通常需要手動調整註冊表或使用工具來符合目前的 Nessus 掃描要求。
1. 修復步驟:停用舊協定並啟用 TLS 1.2
在 Windows Server 2012 R2 中,所有的協定控制都在以下註冊表路徑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
A. 停用 SSL 2.0 , SSL 3.0 和 TLS 1.0, 1.1。
你需要針對 SSL 2.0 , SSL 3.0 和 TLS 1.0, 1.1分別建立 Client 與 Server 子機碼,並將其停用:
建立機碼:
Protocols\SSL 3.0\Server在右側建立 DWORD (32-bit) 值:
Enabled=0DisabledByDefault=1
對以下種類重複上述動作。
- SSL 3.0 client 和 Server
- SSL 2.0 client 和 Server
- TLS 1.0 client 和 Server
- TLS 1.1 client 和 Server
B. 啟用 TLS 1.2
雖然 2012 R2 支援 TLS 1.2,但有時並未預設開啟。請確保以下路徑已正確設定:
建立機碼:
Protocols\TLS 1.2\Server在右側建立 DWORD (32-bit) 值:
Enabled=1DisabledByDefault=0
(Windows Server 2012 不支援TLS 1.3)
重要補充1:.NET Framework 的相容性 (隱藏陷阱)
在 Windows Server 2012 R2 上,即便你關閉了系統層級的 SSL 3.0,有些執行在 .NET Framework (3.5 或 4.x) 上的應用程式可能還是會嘗試使用舊協定。為了確保 .NET 應用程式也使用 TLS 1.2,建議增加以下註冊表項:
路徑 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319路徑 2:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319新增項目:
SchUseStrongCrypto=1(DWORD)SystemDefaultTlsVersions=1(DWORD)
重要補充2:就算是關掉了以下3DES,DES,SSL 2.0,SSL 3.0,TLS 1.0,TLS 1.1的windows 安全通道。僅留下TLS 1.2可通。但弱掃,還是有找出這些弱點的結果。
原因是這些主機的AP用的不是走windows的安全通道。因為早期發展SSL/TLS不是很成熟,各廠商通常自幹或幾乎各玩各的。早期 Schannel 的問題很多,Windows 很晚才成熟。| 時代 | 狀況 |
|---|---|
| 2003 / 2008 | 幾乎各玩各的 |
| 2012 / 2012 R2 | 過渡期 |
| 2016 | 開始大量整合 Schannel |
| 2019 / 2022 | 已經很普遍 |
重要補充3:若因為弱掃還是被找出弱點?
可以查看弱掃結果看port number是多少,是什麼程式在用的。Windows停用 3DES 與 DES 相關套件
有一台windows server 2022主機, 被弱點掃描軟體Nessus,掃出SSL Medium Strength Cipher Suites Supported (SWEET32),Reconfigure the affected application if possible to avoid use of medium strength ciphers.
SWEET32 (CVE-2016-2183) 弱點主要是針對 64 位元區塊加密演算法 (64-bit block ciphers) 的攻擊,而 3DES 與 DES 正是這類受影響的加密套件。
在 Windows Server 2022 中,要徹底修復這項弱點,核心動作就是停用 3DES 加密。
Windows Server因為Windows update後,導致自動重啟或是自動重新開機
從 Windows Server 2016 開始,微軟確實改變了更新機制,使其行為更接近消費端的 Windows 10,這在伺服器管理上引發了不少討論。 以下為您確認微軟在 Windows Server 2016 上的具體行為: 1. 預設行為:自動下載與安裝 在 Windows...
-
Windows powershell 測試 TCP 連線,比 Telnet 更好的方法。 過去以來,要測試某個 IP 的某個 Port 通不通,我最常用的做法是開 Cmd (命令提示字元),下指令 telnet server_ip port_no,如果失敗會得到 "無法...
-
1、打開資源管理器,定位到Edge安裝目錄,一般是C: \ Program Files (x86) \ Microsoft \ Edge \ Application。 2、進入對應當前Edge版本號的文件夾,並進入“Installer”文件夾內找到setup.exe。 3、選中s...
-
查詢AD帳號狀態,可查詢密碼到期時間,使用甚麼群組資訊.... 指令:net user AD_USERNAME /domain 例如AD帳號為test,則指令為: net user test /domain 或是要直接查當下的登入帳號,就輸入: > net user %us...