Nginx 相關配置文件修改


1、為了使Nginx服務的啟動、停止、重載等操作更加方便,可以編寫Nginx服務腳本,並使用chkconfigsystemctl工具來進行管理,也更加符合RHEL系統的管理習慣。

[root@nginx~]# vim /etc/init.d/nginx

#!/bin/bash

# chkconfig: 2345 99 20

# description: Nginx Server Control Script

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

 

case "$1" in

start)

$PROG

;;

stop)

kill -s QUIT $(cat $PIDF)

;;

restart)

$0 stop

$0 start

;;

reload)

kill -s HUP $(cat $PIDF)

;;

*)

echo "Usage: $0 {start|stop|restart|reload}"

exit 1

esac

exit 0

 保存退出

[root@nginx~]#chmod +x /etc/init.d/nginx

[root@nginx~]#chkconfig --add nginx

[root@nginx~]#chkconfignginx on

[root@nginx~]#chkconfig --list nginx

nginx0:關閉1:關閉2:啟用3:啟用4:啟用5:啟用6:關閉

 

這樣就可以通過nginx腳本來啟動、停止、重啟、重載Nginx服務器了。

2、nginx.conf文件結構

Nginx服務器的主配置文件nginx.conf中,包括全局配置、I/O事件配置、HTTP配置這三大塊內容,配置語句的格式為"關鍵字 值;"(末尾以分號表示結束),以"#"開始的部分表示注釋。

1)全局配置

 由各種配置語句組成,不使用特定的界定標記。全局配置部分包括運行用戶、工作進程數、錯誤日志、PID存放位置等基本設置。

 

常用配置項:

  • user nginx [nginx]; //運行用戶,Nginx的運行用戶實際是編譯時指定的nginx,若編譯時未指定則默認為nobody
  • worker_processes 2;//指定nginx啟動的工作進程數量,建議按照cpu數目來指定,一般和CPU核心數相等。
  • worker_cpu_affinity 00000001 00000010; //為每個進程分配cpu核心,上例中將2個進程分配到兩個cpu,當然可以寫多個,或者將一個進程分配到多個cpu
  • worker_rlimit_nofile 102400; //這個指令是指當一個nginx進程打開的最多文件數目,理論值應該是最多打開文件數(ulimit-n)與nginx進程數相除,但是nginx分配請求並不是那么均勻,所以最好與ulimit -n的值保持一致。(通過"ulimit–n 數值"可以修改打開的最多文件數目)
  • error_log logs/error.log; //全局錯誤日志文件的位置
  • pid logs/nginx.pid; //PID文件的位置

2I/O事件配置:

使用"events {}"界定標記,用來指定Nginx進程的I/O響應模型,每個進程的連接數等設置

events {

  //使用epoll模型,對於2.6以上的內核,建議使用epoll模型以提高性能

 

worker_connections 4096; //每個進程允許的最多連接數(默認為1024),每個進程的連接數應根據實際需要來定,一般在10000以下,理論上每台nginx服務器的最大連接數為worker_processes*worker_connections,具體還要看服務器的硬件、帶寬等。

 

}

3HTTP配置

 

使用"http{}"界定標記,包括訪問日志、HTTP端口、網頁目錄、默認字符集、連接保持、以及虛擬主機、PHP解析等一系列設置。其中大部分配置語句包含在子界定標記"server {}"內。

 

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; //支持文件發送(下載)

 

keepalive_timeout  65; //連接保持超時

 

    server { //web服務的監聽配置

 

        listen       80; //監聽地址及端口(IPPORT

 

server_name  www.crushlinux.com; //網站名稱(FQDN

 

charset utf-8; //網頁的默認字符集

    location / { //跟目錄配置

 

            root   html; //網站根目錄的位置安裝位置的html

 

            index  index.html index.htm; //默認首頁(索引頁)

 

        }

 

error_page   500 502 503 504  /50x.html; //內部錯誤的反饋頁面

 

        location = /50x.html { //錯誤頁面配置

 

            root   html;

 

        }

 

 

3、狀態統計模塊

 

Nginx內置了HTTP_STUB_STATUS狀態統計模塊,用來反饋當前的WEB訪問情況。配置編譯參數時可添加--with-http_stub_stastus_module來啟用此模塊。要使用Nginx的狀態統計功能,除了啟用內建模塊以外,還需要修改nginx.conf文件,指定訪問位置並打開stub_status配置。在http{}配置的server{}子配置內添加如下配置項

 

[root@nginx~]# vim /usr/local/nginx/conf/nginx.conf

 

location /status {

 

stub_status on;//打開狀態統計功能

 

access_log off;//關閉此位置的日志記錄

 

        }

 

[root@nginxconf]#systemctl restart nginx

 

 瀏覽器訪問 http://192.168.200.111/status

 

 

 

Active connections 表示當前活躍的連接數,

第三行的三個數字表示Nginx當前總共處理了3個連接,成功創建3次握手,總共處理了12個請求。

Reading表示Nginx讀取到客戶端Header信息數,

Writing表示Nginx返回給客戶端的Header信息數

Waiting表示Nginx已經處理完,正在等候下一次請求指令時的駐留連接數。

4、虛擬主機應用

 使用Nginx搭建虛擬主機服務器時,每個虛擬WEB站點擁有獨立的"server {}"配置段,各自監聽的IP地址、端口號可以單獨指定,當然網站名稱也是不同的。

 

例如:要創建兩個站點www.crushlinux.comwww.cloud.com

 

為兩個虛擬WEB主機分別建立根目錄,並准備測試首頁

 

[root@nginx~]#mkdir /usr/local/nginx/html/crushlinux

 

[root@nginx~]#mkdir /usr/local/nginx/html/cloud

 

[root@nginx~]# echo "<h1>www.crushlinux.com</h1>" >/usr/local/nginx/html/crushlinux/index.html

 

[root@nginx~]# echo "<h1>www.cloud.com</h1>" > /usr/local/nginx/html/cloud/index.html

 

[root@nginx~]# vim /usr/local/nginx/conf/nginx.conf

 

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;

 

keepalive_timeout  65;

 

    server {

 

        listen       80;

 

server_name  www.crushlinux.com;

 

charset utf-8;

 

access_log  logs/crushlinux.access.log  main;

 

        location / {

 

            root   html/crushlinux;

 

index  index.html index.htm;

 

        }

 

    }

 

 

    server {

 

        listen       80;

 

server_name  www.cloud.com;

 

        charset utf-8;

 

access_log  logs/cloud.access.log  main;

 

        location / {

 

            root   html/cloud;

 

index  index.html index.htm;

 

        }

 

    }

 

}

 

 

[root@nginx~]#systemctl restart nginx

 

 

[root@nginx~]# vim /etc/hosts

 

192.168.200.111 www.crushlinux.com

 

192.168.200.111 www.cloud.com

 

虛擬主機訪問測試

 

[root@nginx~]#elinks --dump http://www.crushlinux.com

 

                                 www.crushlinux.com

 

[root@nginx~]#elinks --dump http://www.cloud.com

 

                                  www.cloud.com

 

7、測試

分別在瀏覽器中輸入域名以及IP地址來查看網頁相應內容

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM