Nginx的配置詳解

人無再少年,花有重開日——風城玫瑰 德里克·羅斯php

Nginx是一款輕量級的HTTP服務器,採用事件驅動的異步非阻塞處理方式框架,這讓其具備極好的IO性能,時經常使用於服務端的反向代理和負載均衡。html

Nginx的優勢linux

  • 支持海量高併發:採用IO多路複用epoll。官方測試Nginx可以支持5萬併發連接,實際生產環境中能夠支撐2-4萬併發鏈接數。
  • 內存消耗少:在主流的服務器中Nginx目前是內存消耗最小的了,好比咱們用Nginx+PHP,在3萬併發連接下,開啓10個Nginx進程消耗150M內存。
  • 無償使用能夠商業化:Nginx爲開源軟件,採用的是2-clause BSD-like協議,能夠無償使用,而且能夠用於商業。
  • 配置文件簡單:網絡和程序配置通俗易懂,即便非專業運維也能看懂。

環境:nginx

  • VM虛擬機 Centos7.4 64位版本
  • Xshell 6終端模擬軟件

一、Nginx版本說明shell

  • Mainline version :開發版,主要是給廣大Nginx愛好者,測試、研究和學習的,可是不建議使用於生產環境。
  • Stable version : 穩定版,也就是咱們說的長期更新版本。這種版本通常比較成熟,通過長時間的更新測試,因此這種版本也是主流版本。
  • legacy version : 歷史版本,若是你須要之前的版本,Nginx也是有提供的。

個人系統已經安裝了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

相關文章
相關標籤/搜索