nginx是一款高性能的web和反向代理伺服器,這裡默認題主已經安裝好了nginx下面直接講解如何配置:

進入到安裝目錄:

cd /usr/local/nginx/conf

修改前最好備份下:

cp nginx.conf nginx.conf.20181121

修改配置文件

vi nginx.conf

以下是完整的配置截圖

解釋:

我這裡模擬的是兩個目錄,你可以將你的項目分別放到這2個目錄進行訪問。

我這裡是有域名的,一級和二級域名,將你事先寫好的2個項目,或則只是一個簡單的index.html放入到上面對應的目錄下,/var/www/html2或則/var/www/app

接下來只需要重啟即可;

/usr/local/nginx/sbin/nginx -s reload

然後再您的瀏覽器裡面直接輸入域名即可訪問(http請求默認是80埠,所以這裡不用添加埠號就可以直接訪問。當然了,你埠號改成8082,然後域名或ip加上:8082也是可以直接訪問的。)

我寫過一個專門的文章nginx配置,建議題主去看下。

私信@IT講壇,回復【學習】獲取最新技術乾貨資料。(包含nginx學習視頻資料)。


先簡單介紹一下nginx,nginx到底是什麼?

Nginx ("engine x") 是一個開源的,支持高性能、高並發的 Web 服務和代理服務軟體。它是由俄羅斯人 Igor Sysoev 開發的,最初被應用在俄羅斯的大型網站 www.rambler.ru 上。後來作者將源代碼以類 BSD 許可的形式開源出來供全球使用。

Nginx 的官方介紹見 http://nginx.org/en/Nginx

Nginx整體配置介紹

在了解具體的Nginx配置項之前我們需要對於Nginx配置文件的構成有所概念,一般來說,Nginx配置文件會由如下幾個部分構成:

在上述配置中我們可以看出,Nginx配置文件由以下幾個部分構成:

  1. 全局塊:配置影響nginx全局的指令。一般有運行nginx伺服器的用戶組,nginx進程pid存放路徑,日誌存放路徑,配置文件引入,允許生成worker process數等。
  2. events塊:配置影響nginx伺服器或與用戶的網路連接。有每個進程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網路連接序列化等。

  3. http塊:可以嵌套多個server,配置代理,緩存,日誌定義等絕大多數功能和第三方模塊的配置。如文件引入,mime-type定義,日誌自定義,是否使用sendfile傳輸文件,連接超時時間,單連接請求數等。

  4. server塊:配置虛擬主機的相關參數,一個http中可以有多個server。

  5. location塊:配置請求的路由,以及各種頁面的處理情況。

Nginx配置文件nginx.conf詳解

如圖:

為了方便複製,貼出代碼,如下:

# 定義 Nginx 運行的用戶和用戶組,默認由 nobody 賬號運行, windows 下面可以注釋掉。

user www www;# 工作進程:數目。根據硬體調整,通常等於CPU數量。worker_processes 1;# 全局錯誤日誌定義類型,[ debug | info | notice | warn | error | crit ]error_log /var/log/nginx/error.log info;

# 進程文件,windows 底下可以注釋掉

pid /var/run/nginx.pid;# 一個nginx進程打開的最多文件描述符(句柄)數目,理論值應該是最多打開文件數(系統的值ulimit -n)與nginx進程數相除,# 但是nginx分配請求並不均勻,所以建議與ulimit -n的值保持一致。worker_rlimit_nofile 65535;# events塊events { #每個工作進程的最大連接數量,每個進程允許的最多連接數,理論上每台nginx伺服器的最大連接數為。worker_processes*worker_connections worker_connections 1024;}

# http模塊

http { # 文件擴展名與文件類型映射表 include mime.types; # 默認文件類型 default_type application/octet-stream; # 日誌格式 #log_format main "$remote_addr - $remote_user [$time_local] "$request" " # "$status $body_bytes_sent "$http_referer" " # ""$http_user_agent" "$http_x_forwarded_for"";

# 日誌文件路徑及所用的日誌格式

#access_log logs/access.log main; # 允許sendfile方式傳輸文件,默認為off,可以在http塊,server塊,location塊。 sendfile on; #tcp_nopush on; # 連接超時時間,默認為75s,可以在http,server,location塊。 #keepalive_timeout 0; keepalive_timeout 65; # gzip壓縮相關配置 #gzip on;

gzip on; # 開啟gzip壓縮傳輸

gzip_min_length 1k; #最小壓縮文件大小 gzip_buffers 4 32k; # 壓縮緩存區 gzip_http_version 1.1; # 壓縮版本 gzip_comp_level 2; # 壓縮級別 gzip_types text/plain application/x-javascript text/css application/xml; # 壓縮文件類型 gzip_vary on; gzip_disable "MSIE [1-6]."; # 保存伺服器名字的hash表的大小 server_names_hash_bucket_size 128;

# 設定通過nginx上傳文件的大小

client_max_body_size 100m; # 客戶端請求頭部的緩衝區大小。 client_header_buffer_size 256k; # 客戶請求頭緩衝大小。nginx默認會用client_header_buffer_size這個buffer來讀取header值,如果header過大,它會使用large_client_header_buffers來讀取。 large_client_header_buffers 4 256k; # 代理頭部信息設置,將代理伺服器收到的用戶的信息傳到真實伺服器上 proxy_set_header Host $host:$server_port; proxy_set_header X-real-ip $remote_addr; #proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 虛擬主機 server { # 監聽埠 listen 8088; # 監聽地址 server_name t1.sgl.com; # 請求地址location location / { # 請求轉向到代理伺服器 proxy_pass http://127.0.0.1:8080; } location /admin/user_toIndexPage.do { # 超時時間 proxy_read_timeout 300; proxy_pass http://127.0.0.1:8080; } location /wechat/ { proxy_pass http://127.0.0.1:8081; } location /new/ { proxy_pass http://127.0.0.1:8081; } } }

常用的幾個內置變數

  • $remote_addr 與 $http_x_forwarded_for 用以記錄客戶端的ip地址;
  • $remote_user :用來記錄客戶端用戶名稱;
  • $time_local : 用來記錄訪問時間與時區;
  • $request : 用來記錄請求的url與http協議;
  • $status : 用來記錄請求狀態;成功是200;
  • $body_bytes_s ent :記錄發送給客戶端文件主體內容大小;
  • $http_referer :用來記錄從那個頁面鏈接訪問過來的;
  • $http_user_agent :記錄客戶端瀏覽器的相關信息;

關於nginx重新載入配置、平滑升級參考我的博客

  • nginx啟動、重啟、重新載入配置文件和平滑升級: (

    https://blog.csdn.net/gnail_oug/article/details/52754491)

  • nginx的location解析過程介紹: (https://blog.csdn.net/gnail_oug/article/details/53236898)

  • nginx的gzip壓縮功能參數介紹: (https://blog.csdn.net/gnail_oug/article/details/53246026)

希望以上內容能夠幫助你理解nginx配置。


一張圖片回答你的問題,簡單好保存


真要把nginx的配置講透,可以寫本書。nginx與很多工具配合可以做成很酷的產品!

其它慢慢寫……


推薦閱讀:
相关文章