Ngnix+vs2022+windows 10 環境下編譯


Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,並發能力強,事實上nginx的並發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。【來至百度百科】

最近工作中,用到nginx做反向代理。由於各方面的原因,我們的部署環境是windows server 2019服務器上。Nginx windows版本的安裝包,該版本沒有包含我們需要的健康檢查功能模塊。查看官網,發現健康檢查模塊是屬於商業的部分。因此,希望通過編譯Nginx 源碼添加第三方開源的模塊,達到需求。故有本文。本文作為一個學習的記錄,在windows 10+vs 2022的環境下編譯Nginx源碼。

一、准備工作

1、下載VS2022 (https://visualstudio.microsoft.com/zh-hans/vs/)--編譯環境

安裝的時候需要把C++環境選上。

 

 

安裝完成后,在開始菜單會發現vs2022下面有這么些應用

 

 

 

2、下載MSYS2 (https://www.msys2.org/) -- GNU環境

本文使用的包msys2-x86_64-20220319.exe

3、下載Strawberry Perl (https://strawberryperl.com/ -- 安裝Perl解釋器,主要為了解析openssl中的腳本

本文使用的包strawberry-perl-5.32.1.1-64bit.msi

4、下載nasm(https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/)

本文使用的包nasm-2.15.05-installer-x64.exe,安裝完成后,需要把安裝路徑設置環境變量。

5、下載PCRE (https://github.com/PhilipHazel/pcre2/releases)--依賴庫實現正則表達式解析

本文使用的包pcre2-10.39.zip

6、下載Zlib (http://zlib.net/)--依賴庫實現gzip壓縮解壓縮功能

本文使用的包zlib1211.zip

7、下載OpenSSL (https://www.openssl.org/source/)--依賴庫實現安全套接字ssl功能本文使用的包openssl-1.1.1n.tar.gz

8、下載Ngnix 源碼(https://github.com/nginx/nginx)

 

二、操作步驟

1.解壓nginx(路徑不要出現中文,會報錯)

2.nginx源碼目錄下,創建目錄objs目錄及子目錄lib

3.Pcre,Zlib,OpenSSL解壓到lib目錄下,最終目錄結構如下

 

 

4.編譯配置

修改1:

編輯nginx\auto\lib\openssl\makefile.msvc文件:

  • 找到“VC-WIN32”替換為“VC-WIN64A”
  • “if exist ms\do_ms.bat”替換為“if exist ms\do_win64a.bat”
  • “ms\do_ms”替換為“ms\do_win64a”

由於Nignx沒有提供相關配置項改變缺省banner,所以我們需要改變源碼,然后重編譯和重新安裝一下, 具體操作:
找到/nginx/src/http/ngx_http_header_filter_module.c文件,修改以下變量

static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF; 修改為:static u_char ngx_http_server_string[] = "Server: " CRLF;
static u_char ngx_http_server_full_string[] = "Server: " CRLF;
static u_char ngx_http_server_build_string[] = "Server: " CRLF;

5.運行MSYS2,切換到ngnix 源碼路徑下,執行

 

 

6.運行C++編譯環境

 

 

編譯完成后,在objs目錄下會生成nginx.exe

 

7.打包部署

nginx.exe拷貝到新建的一個文件夾下,同時創建conf,html,logs,temp文件夾,結構如下:

 

 

html創建一個indext.html文件輸出hello nginx,在配置conf目錄創建nginx配置文件監聽端口8080,運行nginx.exe,通過瀏覽器訪問http://localhost:8080,最后顯示如下:

 

 

 

參考文章:https://www.jianshu.com/p/9b4d41905ee6


免責聲明!

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



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