人無再少年,花有重開日——風城玫瑰 德里克·羅斯php
Nginx是一款輕量級的HTTP服務器,採用事件驅動的異步非阻塞處理方式框架,這讓其具備極好的IO性能,時經常使用於服務端的反向代理和負載均衡。html
Nginx的優勢linux
環境:nginx
一、Nginx版本說明shell
個人系統已經安裝了Nginx,可使用以下命令進行版本檢測:vim
[root@localhost ~]# nginx -v
若是出現如下內容說明nginx安裝成功centos
[root@localhost ~]# nginx -v nginx version: nginx/1.14.0
若是你的linux系統中沒有安裝nginx,或者不是最新的版本,那咱們能夠自行配置yum源,下面是官網提供的源,咱們能夠放心使用。瀏覽器
[nginx] name=nginx repo baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0 enabled=1
複製上面的代碼,而後在終端裏面輸入:服務器
vim /etc/yum.repos.d/nginx.repo
而後把代碼複製進去,這裏須要vim操做。賦值完成後,你須要修改一下對應的操做系統和版本號,由於個人是centos和7的版本,因此改成這樣。網絡
baseurl=http://nginx.org/packages/centos/7/$basearch/
你能夠根據你的系統或須要的版本進行修改。若是都已經準備好了,那就能夠開始安裝了,安裝的命令很是簡單:
yum install nginx
安裝完成後,你就能夠來檢測一下nginx版本了。
二、Nginx基本配置文件詳解
安裝完成nginx以後,想知道系統中多了哪些文件,安裝到了哪裏,咱們可使用下面的命令進行查看:
rpm -ql nginx
rpm 是linux的rpm包管理工具,-q 表明詢問模式,-l 表明返回列表,這樣咱們就能夠找到nginx的全部安裝位置了。
[root@localhost ~]# rpm -ql nginx /etc/logrotate.d/nginx /etc/nginx /etc/nginx/conf.d /etc/nginx/conf.d/default.conf /etc/nginx/fastcgi_params /etc/nginx/koi-utf /etc/nginx/koi-win /etc/nginx/mime.types /etc/nginx/modules /etc/nginx/nginx.conf /etc/nginx/scgi_params /etc/nginx/uwsgi_params /etc/nginx/win-utf /etc/rc.d/init.d/nginx /etc/rc.d/init.d/nginx-debug /etc/sysconfig/nginx /etc/sysconfig/nginx-debug /usr/lib64/nginx /usr/lib64/nginx/modules /usr/sbin/nginx /usr/sbin/nginx-debug /usr/share/doc/nginx-1.14.0
/usr/share/doc/nginx-1.14.0/COPYRIGHT /usr/share/man/man8/nginx.8.gz /usr/share/nginx /usr/share/nginx/html /usr/share/nginx/html/50x.html /usr/share/nginx/html/index.html /var/cache/nginx /var/log/nginx
nginx.conf文件解讀
nginx文件是Nginx的總配置文件,在咱們搭建服務器時常常調整的文件。
使用以下命令打開nginx.conf文件
vim /etc/nginx/nginx.conf
下面是文件的註釋
# 運行用戶,默認是nginx,能夠不進行設置
user nginx;
#Nginx進程,通常設置和cpu核數同樣
worker_processes 1;
#錯誤日誌存放位置
error_log /var/log/nginx/error.log warn;
#進程pid存放位置
pid /var/run/nginx.pid;
events {
worker_connections 1024;#單個後臺進程的最大併發數
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;#nginx訪問日誌的存放位置
sendfile off;#是否開啓高效傳輸模式 on開啓 off關閉
#tcp_nopush on;#減小網絡報文段的數量
keepalive_timeout 65; #保持鏈接的時間,也叫超時時間
#gzip on;#開啓gzip壓縮模式
include /etc/nginx/conf.d/*.conf;#包含的子配置項的位置和文件
}
default.conf配置項詳解
在nginx.conf配置項文件裏面的最後一行,咱們打開inclue子文件目錄裏面都是些什麼內容,裏面有些配置文件是我本身新建的。
[root@localhost conf.d]# ls default.conf default.conf.bak default.conf.rpmnew quickapp-local.conf ssl.conf test-8081.conf test-8082.conf theme.crt theme.csr theme.key theme_nopass.key
而後使用cat default.conf進行查看
server { listen 80; #配置監聽端口 server_name localhost; //配置域名
#charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; #服務默認啓動目錄 index index.html index.htm; #默認訪問文件 } #error_page 404 /404.html; # 配置404頁面
# redirect server error pages to the static page /50x.html
# error_page 500 502 503 504 /50x.html; #錯誤狀態碼的顯示頁面,配置後須要重啓
location = /50x.html {
root /usr/share/nginx/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; #} }
明白了這些配置項,咱們知道咱們的服務目錄放在了/usr/share/nginx/html下,可使用命令進入看一下目錄下的文件。
[root@localhost html]# ls
50x.html index.html
到這裏咱們的nginx服務器已經能夠爲html提供服務器了。咱們能夠打開瀏覽器,訪問ip地址試一試。
查看ip:終端輸入命令ifconfig就看看到inet addr:192.168.xx.xx就是了。若是看到以下圖片,說明配置成功了。
三、Nginx服務啓動、中止、重啓
啓動nginx服務
默認狀況下,nginx是不會自動啓動的,須要咱們手動啓動。在centos7版本里面,咱們能夠直接使用nginx命令進行啓動服務,若是不行,那就要使用其餘的命令啓動了,我這裏只使用nginx命令
nginx
輸入命令後,沒有任何提示,那咱們如何知道Nginx服務已經啓動了哪?可使用Linux的組合命令,進行查詢服務的運行情況。
[root@localhost ~]# ps aux | grep nginx root 2056 0.0 0.4 49816 4092 ? Ss Nov01 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf nginx 2548 0.0 0.3 49820 3312 ? S Nov01 0:00 nginx: worker process root 6433 0.0 0.0 103260 840 pts/0 S+ 11:19 0:00 grep nginx
若是出現以上的內容,說明咱們的Nginx被正常開啓了。
中止Nginx服務的四種方法
當即中止服務:
nginx -s stop
這個方法強硬,不管是否在工做,都直接中止進程
從容中止服務:
nginx -s quit
這種方法較stop相比就比較溫和一些了,須要進程完成當前工做後再中止。
killall殺死進程:
這種方法也是比較野蠻的,咱們直接殺死進程,可是在上面使用沒有效果時,咱們用這種方法仍是比較好的。
killall nginx
systemctl中止:
systemctl stop nginx.service
重啓nginx服務:
nginx -s reopen
或者
systemctl restart nginx.service
從新載入配置文件,在修改了配置文件以後,都須要進行這個操做,才能生效
nginx -s reload
查看端口號
在默認狀況下,Nginx啓動後會監聽80端口,從而提供HTTP訪問,若是80端口已經被佔用則會啓動失敗。我麼可使用netstat -tlnp命令查看端口號的佔用狀況。
四、自定義錯誤頁
當咱們的網站遇到頁面沒有找到的時候,咱們須要提示用戶頁面沒有找到,並給用戶可返回性。
咱們在/etc/nginx/conf.d/default.conf是能夠看到下面這句話:
error_page 500 502 503 504 /50x.html;
error_page指令用於自定義錯誤頁面,500,502,503,504 這些就是HTTP中最多見的錯誤代碼,/50.html 用於表示當發生上述指定的任意一個錯誤的時候,都是用網站根目錄下的/50.html文件進行處理。
單獨爲錯誤置頂處理方式
有些時候是要把這些錯誤頁面單獨的表現出來,給用戶更好的體驗。因此就要爲每一個錯誤碼設置不一樣的頁面。設置方法以下:
error_page 404 /404.html
而後在/usr/share/nginx/html目錄下面新建一個404.html文件,終端輸入vim 404.html,並寫入如下內容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404 Not Found</title>
</head>
<body>
<h1 style="text-align: center;">很是抱歉!沒有找到喲!</h1>
</body>
</html>
保存以後重啓服務,再進行訪問,你會發現404頁面發生了改變,以下
五、Nginx設置虛擬主機
虛擬主機是指在一臺物理主機服務器上劃分出多個磁盤空間,每一個磁盤空間都是一個虛擬主機,每臺虛擬主機均可以對外提供Web服務,而且互不干擾。在外界看來,虛擬主機就是一臺獨立的服務器主機,這意味着用戶可以利用虛擬主機把多個不一樣域名的網站部署在同一臺服務器上,而沒必要再爲創建一個網站單獨購買一臺服務器,既解決了維護服務器技術的難題,同時又極大地節省了服務器硬件成本和相關的維護費用。
配置虛擬主機能夠基於端口號、基於IP和基於域名
基於端口號配置虛擬主機
基於端口號來配置虛擬主機,算是Nginx中最簡單的一種方式了。原理就是Nginx監聽多個端口,根據不一樣的端口號,來區分不一樣的網站。
咱們能夠直接配置在主文件裏etc/nginx/nginx.conf
文件裏, 也能夠配置在子配置文件裏etc/nginx/conf.d/default.conf
。我這裏爲了配置方便,就配置在子文件裏了。固然你也能夠再新建一個文件,只要在conf.d文件夾下就能夠了。
在conf.d目錄下新建一個test.conf文件:
touch test.conf
打開test.conf文件:
vim test.conf
在裏面添加如下內容:
server{
listen 8001;
server_name localhost;
root /usr/share/nginx/html/html8001;
index index.html;
}
而後在/usr/share/nginx/html目錄下新建一個目錄:
mkdir html8001
而後在html8001目錄下新建一個index.html,而且添加如下內容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
</head>
<body>
<h2 style="text-align: center;">歡迎來到8001頁面</h2>
</body>
</html>
保存以後,重啓nginx服務。你就會看到以下:
這個8001端口你須要在你買的服務器裏面設置,否則的話訪問不到。
六、Nginx使用域名設置虛擬主機
在真實的上線環境中,一個網站是須要域名和公網IP才能夠訪問的。咱們在實際工做中配置最多的就是設置這種虛擬主機。
配置以域名爲劃分的虛擬主機
這個就須要購買域名了,對域名進行解析,這樣域名才能正確的定位到你須要的IP上。如下就是我假設的一個域名:nginx.zengfp.com
咱們修改/etc/nginx/conf.d目錄下的default.conf 文件,把原來的80端口虛擬主機改成以域名劃分的虛擬主機。代碼以下:
server {
listen 80;
server_name nginx.zengfp.com;
而後咱們用平滑重啓的方式,進行重啓,這時候咱們在瀏覽器中訪問這個網頁。
七、後續的nginx學習會繼續補全。
推薦:http://jspang.com