摘要:是一款是由俄羅斯的程序設計師所開發高性能的和反向代理服務器,也是一個代理服務器。本文主要是介紹了一些基礎的的使用,環境是。指令是起到了一個路由的效果,只能在塊級中使用,對于各路徑和結果進行響應的設置。
nginx
Nginx("engine x")是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。在高連接并發的情況下,Nginx是Apache服務器不錯的替代品。
nginx的出現可以說對于那些在windows上使用IIS,linux上使用apache2的人提供了更多的選擇,使用nginx的情況主要是滿足了以下的一些功能:
本地代理,對于前端開發人員而言,需要把很多的請求代理到本地,本質上還是在本地使用nginx起了web服務,進而完成一些重定向工作;
web服務器,nginx可以在服務器上承擔整個web服務的分發和響應,其中反向代理、負載均衡是它很重要的功能。
本文主要是介紹了一些基礎的nginx的使用,環境是mac10.13.2。
安裝 鏡像brew在mac上可以使用兩種方法來進行:
brew命令安裝
nginx源碼編譯安裝
本文沒有嘗試./configure make make install的方式,不過可以看看這個安裝NGINX;本文只是嘗試使用brew來進行安裝。
homebrew主要分兩部分:git repo(位于GitHub)和二進制bottles(位于bintray),這兩者在國內訪問都不太順暢。可以替換成國內的鏡像,
替換git源:
替換brew.git: cd "$(brew --repo)" git remote set-url origin https://mirrors.ustc.edu.cn/brew.git 替換homebrew-core.git: cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
替換二進制bottles源[bash和zsh需要區分啟動文件]:
//對于bash用戶: echo "export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles" >> ~/.bash_profile source ~/.bash_profile //對于zsh用戶 echo "export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles" >> ~/.zshrc source ~/.zshrc
如此便可以執行安裝:
brew install nginx
執行完成的話那么就可以查看結果如何:nginx -h或者nginx -v看看結果
nginx -h nginx version: nginx/1.12.2 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /usr/local/Cellar/nginx/1.12.2_1/) -c filename : set configuration file (default: /usr/local/etc/nginx/nginx.conf) -g directives : set global directives out of configuration file nginx -v nginx version: nginx/1.12.2配置文件
The way nginx and its modules work is determined in the configuration file. By default, the configuration file is named nginx.conf and placed in the directory /usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx
nginx的命令比較的少,大部分配置都是在配置文件當做,配置文件的路徑/usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx之中,#可以作為注釋符來注釋掉改行;
下面對這里的部分配置內容做個整體的了解和分類:
從形式上分類:簡單指令和塊級指令集
配置文件中主要是存在一些simple directives and block directives;可以認為是簡單的指令和塊級指令集,簡單指令就是:
worker_processes 1;
塊級指令集就是一個塊級指令名加上{},里面包含很多簡單指令集,塊級指令集可以嵌套;
events { worker_connections 1024; }
從功能模塊分類:主模塊、事件模塊、其他基本模塊
主模塊是控制nginx的一些基本指令集合,包含了類似上述的簡單指令worker_processes 1;在內的一些基本指令;
事件模塊設置Nginx處理連接請求;
其他基本模塊包括常用地http模塊;
先看一個初始狀態的配置文件:
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } 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 on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache"s document root # concurs with nginx"s one # #location ~ /.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} include servers/*; }
開始分析配置文件中的一些指令:
簡單指令【本文例舉了主模塊的部分指令】在默認的生成的配置文件的頭部,有這么幾行簡單的指令,雖然大部分是被注釋掉的,但是這里簡單的說下其中的意義,這些簡單指令都屬于主模塊的指令,用于控制基本的nginx的功能:
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid;
user這個指令名代表的是執行worker processes的本機用戶,默認是nobody,那么如果需要讀寫一些roort或者其他用戶所有權的文件時,如果當前配置文件填寫的user這個指令名對應的用戶又不具有r+w+x的權限時,就會出現一些權限問題;
語法: user user [group]
缺省值: nobody nobody
指定Nginx Worker進程運行用戶,默認是nobody帳號。
worker_processes這個指令名是指配置worker_processes的數量,nginx啟動時會有一個主進程和若干的工作進程,這個指令就是來規定工作進程的數量的,對應的是一個數值
nginx has one master process and several worker processes. The main purpose of the master process is to read and evaluate configuration, and maintain worker processes. Worker processes do actual processing of requests.
語法: worker_processes number
缺省值: 1
error_log這個指令是來記錄nginx的運行出行的一些異常,可以指定異常級別
語法: error_log file [ debug | info | notice | warn | error | crit ]
缺省值: ${prefix}/logs/error.log
pid這個是用來指定運行nginx的進程ID的;
語法: pid file塊級指令集(本文例舉了http模塊的部分功能)
由于很多模塊都是塊級指令集的形式的存在,本文拿出來http模塊的部分指令來進行簡單的解析;后面的第二篇會考慮把一些實用的、常用的、很有用的功能進行進一步講解。http核心模塊的指令集合、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 on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache"s document root # concurs with nginx"s one # #location ~ /.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
include指令是主模塊的指令,可以用在http的塊級指令集中,是防止單個配置文件過大,可以直接引用其他的配置文件,而例子中的 mime.types是一個文件,里面主要是比較全面的MIME信息,能包含文本、圖像、音頻、視頻以及其他應用程序專用的數據和文件后綴名的映射
sendfile指令是指是否開啟linux2+的一個sendfile的功能,sendfile詳解
server是http模塊的重要指令,其響應http鏈接的關鍵,一般而言會包含listen server_name location這三部分。
localtion指令是起到了一個路由的效果,只能在server塊級中使用,對于各路徑和結果進行響應的設置。
至于https和一寫其他的指令將會留到下文進行詳細的學習分析。其中可以使用的指令和變量如下:
http核心模塊的指令
可在http核心模塊的塊級指令集中使用的全局變量
運行查看官方的文檔NGINX的文檔,可以通過nginx的可執行文件來啟動nginx服務;
所以要啟動nginx,可以這樣:
$ nginx // 一般安裝的時候都會放到系統的啟動文件夾里面[環境變量] /usr/local/bin/nginx
在啟動之后需要使用nginx -s signal來進行操作,其中signal可以使用以下一些指令:
stop — fast shutdown
quit — graceful shutdown
reload — reloading the configuration file
reopen — reopening the log files
如果要停止服務,可以這樣(完成當前的所有請求后停止,和stop的區別是stop會立即停止nginx):
$ nginx -s quit
如果修改了配置文件,要重新生效,可以這樣:
$ nginx -s reload
一個nginx的中文翻譯網站
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39801.html
摘要:使用系統二進制源方式安裝在系或者系這種方式最簡單的,最快捷的方式,但是不是最好的方式,下面我們來說這種主要問題。我看見網上大多數教程,都是將編譯依賴直接裝在這種方式并不好。安裝后,可以使用配置文件中的指令更改名稱。 本文出處https://shenyifengtk.github.io如有轉載,請說明出處 如果你和我一樣,作為一個苦逼的Java后臺除了實現實現一大堆項目功能,還要兼顧項目...
摘要:當網站的訪問量達到一定程度后,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集群可以使用做反向代理。兩個域名是和服務器使用虛擬機實現反向代理第一步安裝兩個,分別運行在和端口。 showImg(http://ou3np1yz4.bkt.clouddn.com/nginx_logo1.jpg); 在學習淘淘商城的過程中接觸到了nginx,今天就把使用它的過程記錄下來,作為留存。 一、什么...
閱讀 2702·2023-04-25 14:59
閱讀 889·2021-11-22 11:59
閱讀 635·2021-11-17 09:33
閱讀 2468·2021-09-27 13:34
閱讀 3898·2021-09-09 11:55
閱讀 2321·2019-08-30 15:44
閱讀 1123·2019-08-30 14:06
閱讀 1925·2019-08-29 16:55