Nginx入門及正向代理實例

前言

  本文主要講述Nginx功能、代理部署方式,下一次將講述Nginx內部參數調優設置和常見問題解決方案。

簡介

Nginx作爲一種基於REST架空的Web跨平臺服務器。基於事件驅動架構,使得其可以支持數以百萬級別的 TCP 連接。由於Igor Sysoev 將 Nginx 代碼開源,並且賦予BSD授權協議,因此Nginx擁有豐富的第三方功能插件。

部署

本文選擇的平臺是Ubuntu14.04作爲演示。

1、安裝命令【apt-get install nginx】

2、啓動命令【service nginx start】

3、查看Nginx運行狀態【ps aux|grep nginx】

4、在瀏覽器輸入【http://127.0.0.1/】即可看到Welcome to Nginx的歡迎頁面

配置

Nginx在Ubuntu平臺的目錄爲【/ect/nginx】,我們主要會使用到的是【nginx.conf】配置文件,其內容對應的意思爲:

【user www-data;】 Nginx在Linux系統中運行的身份爲www-data
【worker_processes 4;】Nginx啓動的工作進程數量爲4個,一般值設置爲服務器內核的數量;
【pid /run/nginx.pid;】 Nginx運行時的進程識別號爲該文件所設置的值;

【events {
    worker_connections 768;   #單個Nginx工作進程最大併發鏈接數量爲768
    # multi_accept on;
}】                               

【http {

    ##
    # Basic Settings
    ##

    sendfile on;  #啓動高效傳輸文件的模式
    tcp_nopush on;  #數據包會累積一下再一起傳輸,可以提高一些傳輸效率。
    tcp_nodelay on  #啓動TCP數據包緩存在少於MSS時不阻塞發出。於 tcp_nopush on同時開啓時,則Nginx平衡使用。
    keepalive_timeout 65; #長連接超時時間
    types_hash_max_size 2048; #影響散列表的衝突率。types_hash_max_size越大,就會消耗更多的內存,但散列key的衝突率會降低,                                                     #檢索速度就更快。types_hash_max_size越小,消耗的內存就越小,但散列key的衝突率可能上升。
    # server_tokens off;  #錯誤頁面的標籤上不表示 Nginx的版本。

    # server_names_hash_bucket_size 64; #啓動時出現could not build the server_names_hash, you should increase錯誤時請提高這個參                                                                      #數的值
    # server_name_in_redirect off; #重定向的時候需不需要把服務器名寫入head,基本上不會設成on。

    include /etc/nginx/mime.types; #定義MIME類型和後綴名關聯的文件的位置。
    default_type application/octet-stream; #指定mime.types文件中沒有記述到的後綴名的處理方法。

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log; #訪問日誌位置
    error_log /var/log/nginx/error.log; #錯誤日誌位置

    ##
    # Gzip Settings
    ##

    gzip on; #使用gizp壓縮提高網站的傳輸速度
    gzip_disable "msie6";  #其他不壓縮的情況,一般設爲IE6以下

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##

    #include /etc/nginx/naxsi_core.rules;

    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##
    
    #passenger_root /usr;
    #passenger_ruby /usr/bin/ruby;

    ##
    # Virtual Host Configs  ## 虛擬配置引入
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;  #啓動並激活Server目錄
}】
【#mail {
#    # See sample authentication script at:  #服務示例
#    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript

#    # auth_http localhost/auth.php;
#    # pop3_capabilities "TOP" "USER";
#    # imap_capabilities "IMAP4rev1" "UIDPLUS";

#    server {
#        listen     localhost:110;  #監聽本地110端口
#        protocol   pop3; #pop3協議
#        proxy      on; #解析開啓
#    }

#    server {
#        listen     localhost:143;
#        protocol   imap;
#        proxy      on;
#    }
#}】

 

代理服務實例

Nginx可以用來實現正向或反向代理服務。正向代理服務與反向代理服務我認爲技術上是互通的。在概念上正向代理服務的應用場景在於客戶端不能直接訪問服務端資源時,正向代理服務器作爲中間者將請求響應代爲轉發。客戶端明確知道所要訪問的服務器。例如大陸客戶端想要訪問推特,則可通過正向代理服務器來實現,又或者局域網內的客戶端想要訪問公網資源,也可以通過正向代理服務器來實現。而反向代理服務器和資源服務器,在客戶端看來是一體的。例如淘寶客戶端,將請求發送給反向代理服務器,反向代理服務器根據策略將請求交給服務器集羣中的其中一臺進行處理。這個過程對於客戶端來說是透明的。

正向代理例子

場景:假設局域網內部有一個客戶端IP爲192.168.65.122,該客戶端想訪問公網資源http://112.127.97.202:18890。則可以設置一個正向代理服務器,連接公網和局域網。正向代理服務器局域網IP爲192.168.65.164,則開放該IP對應的8888端口。局域網客戶端可通過訪問192.168.65.164:8888來獲取http://112.127.97.202:18890資源。

下面是實現步驟“”

1、進入【/etc/nginx/sites-enabled】目錄

2、在【default】文件內添加下列這端話,保存並退出

server {
    listen  192.168.65.164:8888;
    location / {
        proxy_pass  http://112.127.97.202:18890;
    }
}

3、運行【nginx -s reload】命令,使Nginx重新加載配置文件。

4、打開客戶端瀏覽器,輸入192.168.65.164:8888,即可看到http://112.127.97.202:18890內容

5、運行【tail -f  /var/log/nginx/access.log】,可以查閱到客戶端請求的日誌

 

 

 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章