如果日后需要加入某個模塊的話,需要重新編譯,具體:
make clean,然后./configure+新的配置選項, make, make install。
難點是如何理解nginx服務器的配置,位于安裝目錄的nginx.conf文件。
總之需要知道的是:具體如何配置決定于準備使用nginx實現什么功能,例如最簡單的單單是個反向代理服務器,或者作為一個http server來使用。各種具體應用和配置可以參看一下:
"Typical Configurations Overview For Nginx HTTP(S) Reverse Proxy/Web Server":
http://blog.kovyrin.net/2006/04/17/typical-nginx-configurations/ 更多詳情參看關于如何配置的教程:
http://wiki.nginx.org/NginxConfiguration 默認安裝到/usr/local/nginx,具體啟動的時候需要到bin目錄下執(zhí)行sudo ./nginx;
要終止nginx可以查看位于logs目錄下的pid,然后kill pid即可;
2) 如果是二進制包安裝的話: 首先搜搜看apt-cache search nginx
然后安裝sudo apt-get install nginx
Ubuntu下查看默認安裝的位置,可以使用whereis nginx
nginx和Apache類似都是通過module方式對各種功能進行擴展,關于nginx更多信息可以參看如上的鏈接。
3) Windows下的二進制安裝非常簡單: 直接下載,解壓縮到C:/根目錄下即可.
具體參看:
http://wiki.nginx.org/NginxInstall nginx -s [ stop | quit | reopen | reload ]
3. nginx的配置: 上面介紹了,首先nginx和Apache類似通過各種模塊module可以對服務器的功能進行豐富的擴展。同樣也是類似通過nginx.conf文件可以對進行核心配置或者針對各種模塊的配置。
http://wiki.nginx.org/NginxModules 具體如何配置通常還是取決于,準備使用nginx來做什么,幾個很好的關于配置的參考資料:
http://blog.kovyrin.net/2006/04/17/typical-nginx-configurations/ http://wiki.nginx.org/NginxConfiguration 0) 首先我們展示一下默認的nginx.conf文件中各個部分: nginx.conf配置文件中,針對不同的模塊使用大括號包括起來,很方便地進行配置;
一個非常好的教程可以參看:
http://wiki.nginx.org/NginxModules #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;
#這里表示設置該server的root根目錄是nginx安裝目錄的html目錄,當然可以設置絕對路徑
location / {
root html;
autoindex on; #開啟自動列出目錄文件功能,如果找不到index頁面的話。
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;
}
#這里是一個很好的nginx作為反向代理服務的設置,表示遇到php結尾的,會自動pass給后臺偵聽的apache或者別的服務器;
#proxy the PHP scripts to Apache listening on
127.0.0.1:80 location ~ \.php$ {
proxy_pass
http://127.0.0.1 ;
}
#如果安裝了FastCGI,則將其pass給FastCGI,這個說明了nginx本身不包裹FastCGI處理器,而是僅僅通過如下的方式pass給預先安裝的FastCGI server,具體PHP的FastCGI如何安裝,可以參看相關教程。
# 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;
#}
}
#nginx的虛擬主機情況支持多種類型name-based(多個網站ip相同,域名不同),ip-based(多個網站ip不同)
# 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;
# }
#}
#提供SSL認證的server配置
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
下面我們來簡單介紹各種使用nginx的情況: 可以參考
http://blog.kovyrin.net/2006/04/17/typical-nginx-configurations/ 1)默認安裝的nginx配置文件中l(wèi)isten 80; 表示偵聽80端口的HTTP請求,如果預先安裝了Apache的話,就會占用該端口,從而使得Apache無法使用。
默認的配置提供對各種靜態(tài)文件的訪問;
2)nginx作為反向代理服務器使用 如上面的配置,
#proxy the PHP scripts to Apache listening on
127.0.0.1:80 location ~ \.php$ {
proxy_pass
http://127.0.0.1 ;
}
我們可以設置所有對php script腳本的請求,都proxy_pass到后臺偵聽的web server服務器(例如apache)等。
nginx還提供了一些模塊例如Memcached,或者結合Squid等可以實現pass到后臺web server相應之后,對返回的數據進行cache,從而提供性能。
這個相當于使用nginx作為apache的前端,可以看看這個教程:
http://sameerparwani.com/posts/nginx-as-a-front-end-to-apache/ 常見的情況是,使用nginx直接處理靜態(tài)的請求響應;對于動態(tài)的才pass給服務器,而且對服務器的響應結果進行緩存。
3)nginx做為多臺server的負載均衡作用: http://sameerparwani.com/posts/load-balancing-with-nginx/ 4)另外一個常見的應用就是直接使用nginx代替了Apache,使用Linux+Nginx+MyQL+PHP的stack。 這個時候首先需要以FastCGI的方式安裝PHP(需要一個FastCGI的process server),然后配置nginx支持PHP。
具體參考相關的專題介紹。
5)更多的配置介紹參看 http://wiki.nginx.org/NginxModules 各個模塊的配置和configure教程。