nginx的安裝配置詳解
阿新 • • 發佈:2018-07-06
屬於 nod 客戶端瀏覽器 work http狀態碼 curl -i time dom connect
title: nginx的安裝配置詳解
tags: nginx,虛擬服務器,curl
nginx的安裝配置詳解
1. 介紹各個常用的服務端口
- 21 ftp ;22 ssh;25 smtp;3306 mysql;873 rsync;3389 遠程桌面;161 snmp;111 rpcbind;80 www http;443 https;110 pop3;53 dns;514 rsyslog
- 我們常用的nslookup和dig查詢域名解析工具的安裝包為bind-utils,如
yum install bind-utils -y
- 我們通常配好了nginx後,需要測試一下,一般通過curl命令,curl -I www.baidu.com 可以反饋百度的head信息,可以直接
yum install curl -y
- 如果安裝源碼包,有一些編譯工具沒有安裝的話,我們可以安裝開發包組Development tools,如
yum groupinstall "Development tools"
方式進行安裝。
2. nginx的優勢
- 配置簡單,靈活,輕便
- 高並發(靜態小文件),靜態幾萬並發
- 占資源小,2W並發,開10個線程服務,內存只消耗幾百M
- 功能種類比較多(web,cache,proxy),但是每個功能都不是特別強
- nginx 可以配合動態服務(FASTCGI接口)
- 利用nginx可以對ip限速,可以限制連接數
- nginx的並發很高,1-2M的小文件,可以支持同時1-3W的並發,但是nginx只能處理靜態資源,如果是動態資源就要借助php和數據庫了,但是後兩者並發都比較低
3. nginx的安裝
- 必須先安裝pcre,因為nginx有rewrite功能,rewrite模塊需要pcre的支持,經驗提示,如果安裝什麽提示缺少什麽庫,一般都是缺devel,只要在前面加個-devel即可
[root@maiyat conf]# rpm -qa pcre pcre-7.8-7.el6.x86_64 [root@maiyat conf]# rpm -qa pcre-devel pcre-devel-7.8-7.el6.x86_64
- 安裝openssl -devel,因為nginx有安全模塊,因此需要安裝openssl 和openssl-devel
[root@maiyat conf]# rpm -qa openssl openssl-1.0.1e-57.el6.x86_64 [root@maiyat conf]# rpm -qa openssl-devel openssl-devel-1.0.1e-57.el6.x86_64 [root@maiyat conf]#
- 安裝nginx,先下載源碼包,然後解壓縮,然後通過./configure配置,然後編譯和安裝。其中./configure --help
可以查看到一些配置的參數,如不需要的參數用--without-mail_smtp_module取消,./configure只是配置文件,並不是安裝,只是生成了一個makefile。
這裏安裝只有3個組件,其他必須的都會默認安裝,-user=nginx指定用戶,--group=nginx指定組,--with-http_ssl_module激活sl加密模塊,--with-http_stub_status_module激活狀態信息wget http://nginx.org/download/nginx-1.6.3.tar.gz tar xf nginx-1.6.3.tar.gz cd nginx-1.6.3 ./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module echo $? make && make install useradd nginx -s /sbin/nologin -M id nginx grep nginx /etc/group ln -s /application/nginx-1.6.3/ /application/nginx
- 註意,有很多人提示沒有安裝gcc,或者make,我們安裝的時候最好把開發庫工具安裝上去
yum groupinstall "Development tools"
如果是源碼安裝pcre的話,安裝nginx可能會找不到pcre,而提示無法找到pcre,
因此編譯的時候,我們必須用--with=/usr/local/bin/pcre 指定pcre的位置。 - 安裝完成,啟動服務: /application/nginx/sbin/nginx,檢查一下,80端口是否打開,進程是否存在。
[root@maiyat ~]# /application/nginx/sbin/nginx [root@maiyat ~]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1382 root 6u IPv4 13412 0t0 TCP *:http (LISTEN) nginx 1383 nginx 6u IPv4 13412 0t0 TCP *:http (LISTEN) [root@maiyat ~]# ps -ef |grep nginx |grep -v grep root 1382 1 0 23:24 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx nginx 1383 1382 0 23:24 ? 00:00:00 nginx: worker process [root@maiyat ~]# [root@maiyat ~]# ss -lntup |grep nginx tcp LISTEN 0 128 *:80 *:* users:(("nginx",1382,6),("nginx",1383,6))
- 在客戶端瀏覽器輸入 192.168.50.2:80,看能不能打開nginx的初使頁面。
4. nginx服務的兩個相關命令
- 改完nginx配置文件後,我們不能著急重啟nginx服務,必須先檢查一下配置文件的語法,如:
[root@maiyat sbin]# /application/nginx/sbin/nginx -t nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
- 改完nginx配置文件後,我們必須要重啟nginx才能讓配置生效,重啟的時候要平滑重啟。
[root@maiyat sbin]# /application/nginx/sbin/nginx -s reload [root@maiyat sbin]#
- 查看nginx安裝配置的參數,/application/nginx/sbin/nginx -V,如:
[root@maiyat sbin]# /application/nginx/sbin/nginx -V nginx version: nginx/1.6.3 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) TLS SNI support enabled configure arguments: --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module [root@maiyat sbin]#
5. 安裝目錄文件詳解
- nginx安裝完成後文件詳解如:
[root@maiyat nginx]# ls |grep -v temp |xargs tree -L 1 conf 配置文件 |--nginx.conf html 站點目錄 |-- 50x.html `-- index.html logs 日誌信息 |-- access.log |-- error.log `-- nginx.pid sbin 執行文件 `-- nginx
-
nginx的配置文件nginx.conf,我們配置的時候可以先把原來的備份,然後借用nginx.conf.default過來直接配置,配置文件一定要註意{},必須成對出現,不能拆散如:
cat nginx.conf ################################################# #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; 這幾行屬於main區,Nginx核心功能模塊 events { worker_connections 1024; 一個worker所能處理的多少的並發連接數 14 } 這幾行屬於event區,Nginx核心功能模塊 http { include mime.types; default_type application/octet-stream; 這個屬於http區開始,Nginx核心功能模塊 ################################################## 實例搭建兩個虛擬主機www.maiyat.com bbs.maiyat.com ################################################## cp nginx.conf nginx.conf.bak egrep -v "#|^$" nginx.conf.default > nginx.conf worker_processes 1; worker進程的數量 events { 事件區塊的開始 worker_connections 1024; 每個woker進程支持的最大連接數 } 事件區塊結束 http { http區塊開始 include mime.types; Nginx支持的媒體類型庫文件包含 default_type application/octet-stream; 默認的媒體類型 sendfile on; 開啟高效傳輸模式 keepalive_timeout 65; 連接超時 server { 第一個server區塊開始,代表一個獨立的虛擬主機站點 listen 80; 提供服務的端口,默認是80 server_name www.maiyat.com; 提供服務的域名主機名 location / { 第一個Location區塊的開始 root html/www; 站點的根目錄,相對路徑,相對於Nginx的安裝路徑 index index.html index.htm; 默認的首頁文件,多個用空格分開 } 第一個區塊結束 } server { listen 80; server_name bbs.maiyat.com; location / { root html/bbs; index index.html index.htm; } error_page 500 502 503 504 /50x.html; 出現對應的http狀態碼使用50x.html回應 location = /50x.html { Location區塊的開始,訪問50x.html root html; 指定對應的站點目錄為html } } } http區塊結束
- 測試www.maiyat.com 及bbs.maiyat.com有沒有搭建好
3.1 先在/etc/hosts解析好,可以一個ip後面跟幾個不同的域名,如[root@maiyat conf]# cat /etc/hosts #127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 maiyat www.maiyat.com bbs.maiyat.com blog.maiyat.com 192.168.50.2 maiyat www.maiyat.com bbs.maiyat.com blog.maiyat.com
3.2 如果是windows的hosts文件在 C:\Windows\System32\drivers\etc
3.3 linux下用curl命令看能不能返回消息,windows下用瀏覽器輸入域名[root@maiyat conf]# curl www.maiyat.com hello world [root@maiyat conf]# curl bbs.maiyat.com hello oldboy [root@maiyat conf]# curl blog.maiyat.com happy comeon maiyat.com !
6. 虛擬主機還可以使用端口和IP進行配置
- 上述講的是最常用的通過域名來配置虛擬主機,但是虛擬主機還可以通過端口和ip進行配置。如基於端口的配置,直接在配置文件的
listen 80,80
改為8001或者其他的就好了,其他的都不用改,註意要把幾個虛擬主機的域名統一,需要重啟nginx服務。
[root@maiyat conf]# vi nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8001;
server_name www.maiyat.com;
location / {
root html/www;
index index.html index.htm;
}
}
server {
listen 8002;
server_name www.maiyat.com;
location / {
root html/bbs;
index index.html index.htm;
}
}
server {
listen 8003;
server_name www.maiyat.com;
location / {
root html/blog;
index index.html index.htm;
}
}
}
[root@maiyat conf]# cd ../sbin/
[root@maiyat sbin]# ./nginx -t
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
[root@maiyat sbin]# ./nginx -s reload
[root@maiyat sbin]# lsof -i :8001
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1382 root 10u IPv4 13964 0t0 TCP *:vcom-tunnel (LISTEN)
nginx 1476 nginx 10u IPv4 13964 0t0 TCP *:vcom-tunnel (LISTEN)
[root@maiyat sbin]# lsof -i :8002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1382 root 11u IPv4 13965 0t0 TCP *:teradataordbms (LISTEN)
nginx 1476 nginx 11u IPv4 13965 0t0 TCP *:teradataordbms (LISTEN)
[root@maiyat sbin]# lsof -i :8003
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1382 root 12u IPv4 13966 0t0 TCP *:mcreport (LISTEN)
nginx 1476 nginx 12u IPv4 13966 0t0 TCP *:mcreport (LISTEN)
[root@maiyat sbin]# curl www.maiyat.com:8001
hello world
[root@maiyat sbin]# curl www.maiyat.com:8002
hello oldboy
[root@maiyat sbin]# curl www.maiyat.com:8003
happy comeon maiyat.com !
2 基於ip進行配置虛擬主機,註意修改的時候把端口恢復為80。
[root@maiyat sbin]# cd ../conf
[root@maiyat conf]# vi nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 192.168.50.250:80;
server_name www.maiyat.com;
location / {
root html/www;
index index.html index.htm;
}
}
server {
listen 192.168.50.251:80;
server_name www.maiyat.com;
location / {
root html/bbs;
index index.html index.htm;
}
}
server {
listen 192.168.50.253:80;
server_name www.maiyat.com;
location / {
root html/blog;
index index.html index.htm;
}
}
}
[root@maiyat conf]#
[root@maiyat conf]# cd ../sbin/
[root@maiyat sbin]# ./nginx -t
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
nginx: [emerg] bind() to 192.168.50.250:80 failed (99: Cannot assign requested address)
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test failed
[root@maiyat sbin]# ip addr add 192.168.50.250/24 dev eth0
[root@maiyat sbin]# ip addr add 192.168.50.251/24 dev eth0
[root@maiyat sbin]# ip addr add 192.168.50.253/24 dev eth0
[root@maiyat sbin]# ./nginx -t
nginx: the configuration file /application/nginx-1.6.3/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful
[root@maiyat sbin]# ./nginx -s reload
[root@maiyat sbin]# curl 192.168.50.250
hello world
[root@maiyat sbin]# curl 192.168.50.251
hello oldboy
[root@maiyat sbin]# curl 192.168.50.253
happy comeon maiyat.com
nginx的安裝配置詳解