目的:使用nginx進行反向代理兩個tornado進程實例
一些可能會要的linux命令:(你安裝失敗后,慢慢卸載刪掉重來)
ps -ef | grep nginx kill -9 pid apt-get --purge remove nginx;卸載nginx,同時刪除相關配置 find / -name nginx*;全局查找相關文件 rm -rf filename;強制刪掉
操作步驟:
1、apt-get update;更新資源列表
2、apt-get install nginx;安裝nginx
使用apt-get進行安裝,請注意保證你的80端口沒有被其他程序占用,因為他會主動幫你開啟服務,不然安裝會有莫名奇妙的報錯,導致缺少一些文件。lsof -i:8088;查看8088端口是否有程序在占用。
3、whereis nginx;
4、進入/etc/nginx修改nginx.conf配置文件
在http{}增加如下:
nginx.conf配置文件參數介紹:
user www-data; # 運行用戶 worker_processes 1; # 指定nginx要開啟的子進程數量,運行過程中監控每個進程消耗內存(一般幾M~幾十M不等)根據實際情況進行調整,通常數量是CPU內核數量的整數倍 error_log /var/log/nginx/error.log info; # 定義錯誤日志文件的位置及輸出級別【debug / info/notice/warn/error/crit】 pid /var/run/nginx.pid; # pid用來指定進程id的存儲文件的位置 # nginx服務器的工作模式的一些操作配置 events { use epoll; # epoll是多路復用IO(I/OMultiplexing)中的一種方式,但是僅用於linux2.6以上內核,可以大大提高nginx的性能 worker_connections 1024; # 單個后台worker process進程的最大並發鏈接數 # multi_accept on; # 配置指定nginx在收到一個新連接通知后盡可能多的接受更多的連接 } # http模塊是nginx最核心的一個模塊,配置項也是比較多的,項目中會設置到很多的實際業務場景,需要根據硬件信息進行適當的配置,常規情況下,使用默認配置即可 http { # 基礎配置 sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL證書配置 ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # 日志配置 ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip 壓縮配置 ## gzip on; gzip_disable "msie6"; # 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/javascripttext/xml application/xml application/xml+rss text/javascript; ## # 虛擬主機配置(這里虛擬主機的配置就是下面介紹的server{}的配置,可以以文件的形式導入,如下,也可以直接寫server{}) ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; # 可選上面的文件寫法和這里的直接寫 server { listen xxx; server_name xxxx; ....... location /{ root xxx; index xxx; ...... } } # 負載均衡配置 upstream name { .... } }
nginx.conf參數配置介紹
1) 基礎配置
sendfile on:配置on讓sendfile發揮作用,將文件的回寫過程交給數據緩沖去去完成,而不是放在應用中完成,這樣的話在性能提升有有好處 tc_nopush on:讓nginx在一個數據包中發送所有的頭文件,而不是一個一個單獨發 tcp_nodelay on:讓nginx不要緩存數據,而是一段一段發送,如果數據的傳輸有實時性的要求的話可以配置它,發送完一小段數據就立刻能得到返回值,但是不要濫用哦 keepalive_timeout 10:給客戶端分配連接超時時間,服務器會在這個時間過后關閉連接。一般設置時間較短,可以讓nginx工作持續性更好 client_header_timeout 10:設置請求頭的超時時間 client_body_timeout 10:設置請求體的超時時間 send_timeout 10:指定客戶端響應超時時間,如果客戶端兩次操作間隔超過這個時間,服務器就會關閉這個鏈接 limit_conn_zone $binary_remote_addr zone=addr:5m :設置用於保存各種key的共享內存的參數, limit_conn addr 100: 給定的key設置最大連接數 server_tokens:雖然不會讓nginx執行速度更快,但是可以在錯誤頁面關閉nginx版本提示,對於網站安全性的提升有好處哦 include /etc/nginx/mime.types:指定在當前文件中包含另一個文件的指令 default_type application/octet-stream:指定默認處理的文件類型可以是二進制 type_hash_max_size 2048:混淆數據,影響三列沖突率,值越大消耗內存越多,散列key沖突率會降低,檢索速度更快;值越小key,占用內存較少,沖突率越高,檢索速度變慢
2) 日志配置
access_log logs/access.log:設置存儲訪問記錄的日志 error_log logs/error.log:設置存儲記錄錯誤發生的日志
3) SSL證書加密
ssl_protocols:指令用於啟動特定的加密協議,nginx在1.1.13和1.0.12版本后默認是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1與TLSv1.2要確保OpenSSL >= 1.0.1 ,SSLv3 現在還有很多地方在用但有不少被攻擊的漏洞。 ssl prefer server ciphers:設置協商加密算法時,優先使用我們服務端的加密套件,而不是客戶端瀏覽器的加密套件
4) 壓縮配置
gzip 是告訴nginx采用gzip壓縮的形式發送數據。這將會減少我們發送的數據量。 gzip_disable 為指定的客戶端禁用gzip功能。我們設置成IE6或者更低版本以使我們的方案能夠廣泛兼容。 gzip_static 告訴nginx在壓縮資源之前,先查找是否有預先gzip處理過的資源。這要求你預先壓縮你的文件(在這個例子中被注釋掉了),從而允許你使用最高壓縮比,這樣nginx就不用再壓縮這些文件了(想要更詳盡的gzip_static的信息,請點擊這里)。 gzip_proxied 允許或者禁止壓縮基於請求和響應的響應流。我們設置為any,意味着將會壓縮所有的請求。 gzip_min_length 設置對數據啟用壓縮的最少字節數。如果一個請求小於1000字節,我們最好不要壓縮它,因為壓縮這些小的數據會降低處理此請求的所有進程的速度。 gzip_comp_level 設置數據的壓縮等級。這個等級可以是1-9之間的任意數值,9是最慢但是壓縮比最大的。我們設置為4,這是一個比較折中的設置。 gzip_type 設置需要壓縮的數據格式。上面例子中已經有一些了,你也可以再添加更多的格式。
5) 文件緩存配置
open_file_cache 打開緩存的同時也指定了緩存最大數目,以及緩存的時間。我們可以設置一個相對高的最大時間,這樣我們可以在它們不活動超過20秒后清除掉。 open_file_cache_valid 在open_file_cache中指定檢測正確信息的間隔時間。 open_file_cache_min_uses 定義了open_file_cache中指令參數不活動時間期間里最小的文件數。 open_file_cache_errors 指定了當搜索一個文件時是否緩存錯誤信息,也包括再次給配置中添加文件。我們也包括了服務器模塊,這些是在不同文件中定義的。如果你的服務器模塊不在這些位置,你就得修改這一行來指定正確的位置。
server模塊
srever模塊配置是http模塊中的一個子模塊,用來定義一個虛擬訪問主機,也就是一個虛擬服務器的配置信息
server { listen 80; server_name localhost 192.168.1.100; root /nginx/www; index index.php index.html index.html; charset utf-8; access_log logs/access.log; error_log logs/error.log; ...... }
核心配置信息如下:
-
server:一個虛擬主機的配置,一個http中可以配置多個server
-
server_name:用力啊指定ip地址或者域名,多個配置之間用空格分隔
-
root:表示整個server虛擬主機內的根目錄,所有當前主機中web項目的根目錄
-
index:用戶訪問web網站時的全局首頁
-
charset:用於設置www/路徑中配置的網頁的默認編碼格式
-
access_log:用於指定該虛擬主機服務器中的訪問記錄日志存放路徑
-
error_log:用於指定該虛擬主機服務器中訪問錯誤日志的存放路徑
location模塊
location模塊是nginx配置中出現最多的一個配置,主要用於配置路由訪問信息
在路由訪問信息配置中關聯到反向代理、負載均衡等等各項功能,所以location模塊也是一個非常重要的配置模塊
基本配置
location / { root /nginx/www; index index.php index.html index.htm; proxy_pass http://mysvr ; #請求轉向定義的服務器列表 error_page 500 502 503 504 /50x.html;# 定義錯誤提示頁面 }
location /:表示匹配訪問根目錄
root:用於指定訪問根目錄時,訪問虛擬主機的web目錄
index:在不指定訪問具體資源時,默認展示的資源文件列表
反向代理配置方式
通過反向代理代理服務器訪問模式,通過proxy_set配置讓客戶端訪問透明化
location / { proxy_pass http://localhost:8888; proxy_set_header X-real-ip $remote_addr; proxy_set_header Host $http_host; }
uwsgi配置
wsgi模式下的服務器配置訪問方式
location / { include uwsgi_params; uwsgi_pass localhost:8888 }
upstream模塊
upstream模塊主要負責負載均衡的配置,通過默認的輪詢調度方式來分發請求到后端服務器
簡單的配置方式如下
upstream name { ip_hash; server 192.168.1.100:8000; server 192.168.1.100:8001 down; server 192.168.1.100:8002 max_fails=3; server 192.168.1.100:8003 fail_timeout=20s; server 192.168.1.100:8004 max_fails=3 fail_timeout=20s; }
核心配置信息如下
-
ip_hash:指定請求調度算法,默認是weight權重輪詢調度,可以指定
(上面如果不寫ip_hash,則默認輪流分配給每個server進行處理,指定后,同一個ip會指定一個server來處理)
-
server host:port:分發服務器的列表配置
-
-- down:表示該主機暫停服務
-
-- max_fails:表示失敗最大次數,超過失敗最大次數暫停服務
-
-- fail_timeout:表示如果請求受理失敗,暫停指定的時間之后重新發
以上內容參考來自
https://blog.csdn.net/tsummerb/article/details/79248015
3、nginx -t;檢查配置文件是否正確
4、service nginx reload;重載
5、service nginx restart;重啟
nginx命令
service nginx {start|stop|status|restart|reload|configtest|} /usr/sbin/nginx -v;查看版本
6、打開網頁看看是否成功
7、進行反向代理設置(上面的8088口,我已經設置好了反向代理)
設置配置示例:https://www.cnblogs.com/sixiweb/p/3988805.html
配置后重載,重啟,OK
nginx詳解推薦:https://blog.csdn.net/tsummerb/article/details/79248015