2018-08-11

Nginx基本內容

[TOC]

下載

apt-get install nginx

目錄詳情

nginx一共需要3個目錄文件

web目錄: /root/ var/www/html

配置目錄 /etc/nginx

啟動目錄 /usr/sbin/nginx

1533698033687.png

其中在配置文件中包含了兩種配置,一種是nginx的配置。也就是/etc/nginx/nginx.conf

另外一個文件可以理解為是針對個人用戶對自己所需要建立的web項目的個性化配置

可以寫在/etc/nginx/conf.d/下或者/etc/nginx/sites-available/default下

在nginx.conf中使用include來指向其他的配置文件,可以有多個配置

1533700822409.png

當然可以填入多個配置來供選擇,執(zhí)行順序從上到下執(zhí)行

內容配置

下面解釋一下nginx中的配置文件

#運行用戶
user www-data;
#啟動進程,通常設置成和cpu的數(shù)量相等。也可以是n+1 或者設置成auto
worker_processes auto;

#全局錯誤日志及進程PID文件
error_log  /var/log/nginx/error.log;
pid /run/nginx.pid;

#工作模式及連接數(shù)上限
events {
        #use epoll;
        #epoll是多路復用IO(I/O Multiplexing)中的一種方式,但是僅用于linux2.6以上內核,可以大大提高nginx的性能
        worker_connections 768; #單個后臺worker process進程的最大并發(fā)連接數(shù)
        # multi_accept on;
}
#設定http服務器,利用他的反向代理功能提供負載均衡
http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        #設定mime類型,類型由mime.type文件定義
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
        #設定日志格式
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        
        #開啟gzip壓縮
        gzip on;
        gzip_disable "msie6";
        #設定conf配置文件
        include /etc/nginx/conf.d/*.conf;
}
server {
        #偵聽80端口
        listen       80;
        #定義使用www.xx.com訪問
        server_name  www.xx.com;
        #設定本虛擬主機的訪問日志
        access_log  logs/www.xx.com.access.log  main;
        #默認請求
    location / {
          root   /root;      #定義服務器的默認網站根目錄位置
          index index.php index.html index.htm;   #定義首頁索引文件的名稱

          fastcgi_pass  www.xx.com;
         fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name; 
          include /etc/nginx/fastcgi_params;
        }
    # 定義錯誤提示頁面
    error_page   500 502 503 504 /50x.html;  
        location = /50x.html {
        root   /root;
    }

負載均衡配置

#設定http服務器,利用它的反向代理功能提供負載均衡支持
http {
     #設定mime類型,類型由mime.type文件定義
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    #設定日志格式
    access_log    /var/log/nginx/access.log;

    #省略上文有的一些配置節(jié)點


    #設定負載均衡的服務器列表
     upstream mysvr {
    #weigth參數(shù)表示權值,權值越高被分配到的幾率越大
    server 192.168.8.1x:3128 weight=5;#本機上的Squid開啟3128端口
    server 192.168.8.2x:80  weight=1;
    server 192.168.8.3x:80  weight=6;
    }

   upstream mysvr2 {
    #weigth參數(shù)表示權值,權值越高被分配到的幾率越大

    server 192.168.8.x:80  weight=1;
    server 192.168.8.x:80  weight=6;
    }

   #第一個虛擬服務器
   server {
    #偵聽192.168.8.x的80端口
        listen       80;
        server_name  192.168.8.x;

      #對aspx后綴的進行負載均衡請求
    location ~ .*\.aspx$ {

         root   /root;      #定義服務器的默認網站根目錄位置
          index index.php index.html index.htm;   #定義首頁索引文件的名稱

          proxy_pass  http://mysvr ;#請求轉向mysvr 定義的服務器列表

          #以下是一些反向代理的配置可刪除.

          proxy_redirect off;

          #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 10m;    #允許客戶端請求的最大單文件字節(jié)數(shù)
          client_body_buffer_size 128k;  #緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),
          proxy_connect_timeout 90;  #nginx跟后端服務器連接超時時間(代理連接超時)
          proxy_send_timeout 90;        #后端服務器數(shù)據回傳時間(代理發(fā)送超時)
          proxy_read_timeout 90;         #連接成功后,后端服務器響應時間(代理接收超時)
          proxy_buffer_size 4k;             #設置代理服務器(nginx)保存用戶頭信息的緩沖區(qū)大小
          proxy_buffers 4 32k;               #proxy_buffers緩沖區(qū),網頁平均在32k以下的話,這樣設置
          proxy_busy_buffers_size 64k;    #高負荷下緩沖大小(proxy_buffers*2)
          proxy_temp_file_write_size 64k;  #設定緩存文件夾大小,大于這個值,將從upstream服務器傳

       }

     }
}

錯誤解決

端口占用(1)

1533699051144.png

錯誤原因:端口重復占用,先訪問80端口看看是什么,如果已經啟動了你要啟動的項目則成功,如果不是

開始解決

lsof -i :80  #查看80端口的情況
netstat -ltunp #查看進程
1533699233355.png

殺死進程

kill pid

擴展

1.nginx從容停止

ps -ef |grep nginx #查看端口號

2.殺死進程

kill -QUTT 2072

1.快速停止

kill -TREM 2132 或者 kill -ITN 2132

1.強制停止

pkill -9 nginx

1.檢查配置是否正確

/etc/sbin/nginx -t

使用Nginx配置一個靜態(tài)頁面

1)編寫一個簡單的網頁作為測試工具

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="main.css" />
    <script src="main.js"></script>
</head>
<body>
        <h1 style="font-size: 50px">Hello,nginxTes2222222t</h1>


</body>
</html>

2)創(chuàng)建一個文件夾用于存放你的文件

這里為了方便,我將文件夾添加在了/etc/nginx中,也就是nginx的安裝目錄中

1533753948830.png

這個peoject就是我的項目,在里面創(chuàng)建一個www.html的靜態(tài)網頁

1533753995594.png

3)接下來配置我們的nginx.conf文件

1533754060371.png

將include中的地址改成conf.d文件夾下所有的以,conf結尾的文件

當然如果你不喜歡conf.d這個文件,你也可以自己創(chuàng)建一個文件夾用于存放.conf文件,再由Include指向這個文件夾就可以了

如果你配置了多個文件夾,比如

1533754338310.png

那他所執(zhí)行的順序就是先去查找conf.d中的文件,如果找不到,則去conf2.d中尋找

4)配置conf.d的文件

這里我創(chuàng)建了一個default.conf的文件用來配置

因為對于每一個網站或者網頁,都會有一個配置,因此我們可以把他認定成為一個server

1533754492646.png

listen是監(jiān)聽端口

server_name是訪問ip或者域名

root 是文件第一次訪問的根目錄

5)保存退出,啟動nginx

另外需要注意的是當nginx中的配置發(fā)生變化的時候,我們可以重啟Nginx,

但是如果是項目的內容發(fā)生變化,就盡量不要去重啟nginx了

方便操作

1)如果你嫌麻煩覺得自己的一個server沒有必要放到一個文件中再由nginx去匹配文件中的內容,那么你可以直接將你的server放置再nginx.conf下的http{}中

  1. 如果你想檢驗自己的操作是否正確,配置是否正確,則可以用nginx -t來檢驗


    1533755331600.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容