详解 nginx 配置文件及构建 web 虚拟主机
生活随笔
收集整理的這篇文章主要介紹了
详解 nginx 配置文件及构建 web 虚拟主机
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
詳解 nginx 主配置文件、添加服務及構建 web 虛擬主機
- 一、添加為系統服務
- 1、方法一
- 2、方法二
- 二、nginx 主配置文件 nginx.conf
- 1、全局配置
- 2、I/O 事件配置
- 3、HTTP 配置
- 4、日志格式設定
- 5、訪問狀態統計配置
- 6、基于授權的訪問控制
- 7、基于客戶端的訪問控制
- 三、構建 Nginx 虛擬 web 主機
- 1、基于域名的虛擬主機
- ①、為虛擬主機提供域名解析
- ②、為虛擬主機準備網頁文檔
- ③、添加虛擬主機配置
- ④、重啟服務并進行測試
- 2、基于 IP地址 的虛擬主機
- 3、基于端口的虛擬主機
一、添加為系統服務
1、方法一
vim /lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecrReload=/bin/kill -s HUP $MAINPID ExecrStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.targetchmod 754 /lib/systemd/system/nginx.service systemctl start nginx.service systemctl enable nginx.service2、方法二
vim /etc/init.d/nginx #!/bin/bash #chkconfig: - 99 20 #description:Nginx Service Control Script COM="/usr/local/nginx/sbin/nginx" PID="/usr/local/nginx/logs/nginx.pid" case "$1" in start)$COM ;;stop)kill -s QUIT $(cat $PID) ;;restart)$0 stop$0 start ;;reload)kill -s HUP $(cat $PID) ;;*) echo "Usage: $0 {start|stop|restart|reload}" exit 1esac exit 0chmod +x /etc/init.d/nginx chkconfig --add nginx #添加為系統服務 systemctl stop nginx systemctl start nginx二、nginx 主配置文件 nginx.conf
vim /usr/local/nginx/conf/nginx.conf1、全局配置
#user nobody; #運行用戶,若編譯時未指定則默認為 nobody worker_processes 1; #工作進程數量,可配置成服務器內核數 * 2,如果網站訪問量不大,一般設為1就夠用了 #error_log logs/error.log; #錯誤日志文件的位置 #pid logs/nginx.pid; #PID 文件的位置2、I/O 事件配置
events {use epoll; #使用 epoll 模型,2.6及以上版本的系統內核,建議使用epoll模型以提高性能worker_connections 4096; #每個進程處理 4096 個連接,系統默認為1024,可更改 }- 如提高每個進程的連接數還需執行“ulimit -n 65535”命令臨時修改本地每個進程可以同時打開的最大文件數。
- 在Linux平臺上,在進行高并發TCP連接處理時,最高的并發數量都要受到系統對用戶單一進程同時可打開文件數量的限制(這是因為系統為每個TCP連接都要創建一個socket句柄,每個socket句柄同時也是一個文件句柄)。
- 可使用ulimit -a命令查看系統允許當前用戶進程打開的文件數限制。
- 查看內核和CPU
3、HTTP 配置
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;##此選項允許或禁止使用socket的TCP_CORK的選項(發送數據包前先緩存數據),此選項僅在使用sendfile的時候使用#tcp_nopush on;##連接保持超時時間,單位是秒#keepalive_timeout 0;keepalive_timeout 65;##gzip模塊設置,設置是否開啟gzip壓縮輸出#gzip on;##Web 服務的監聽配置server {##監聽地址及端口listen 80; ##站點域名,可以有多個,用空格隔開server_name www.ljm.com;##網頁的默認字符集charset utf-8;##根目錄配置location / {##網站根目錄的位置/usr/local/nginx/htmlroot html;##默認首頁文件名index index.html index.php;}##內部錯誤的反饋頁面error_page 500 502 503 504 /50x.html;##錯誤頁面配置location = /50x.html {root html;}} }4、日志格式設定
$remote_addr與$http_x_forwarded_for用以記錄客戶端的ip地址; $remote_user:用來記錄客戶端用戶名稱; $time_local: 用來記錄訪問時間與時區; $request: 用來記錄請求的url與http協議; $status: 用來記錄請求狀態;成功是200, $body_bytes_sent :記錄發送給客戶端文件主體內容大小; $http_referer:用來記錄從哪個頁面鏈接訪問過來的; $http_user_agent:記錄客戶瀏覽器的相關信息; 通常web服務器放在反向代理的后面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理服務器的iP地址。反向代理服務器在轉發請求的http頭信息中,可以增加x_forwarded_for信息,用以記錄原有客戶端的IP地址和原來客戶端的請求的服務器地址。location常見配置指令,root、alias、proxy_pass root(根路徑配置):請求www.ljm.com/test/1.jpg,會返回文件/usr/local/nginx/html/test/1.jpg alias(別名配置):請求www.ljm.com/test/1.jpg,會返回文件/usr/local/nginx/html/1.jpg5、訪問狀態統計配置
1、先使用命令/usr/local/nginx/sbin/nginx -V 查看已安裝的 Nginx 是否包含 HTTP_STUB_STATUS 模塊 2、修改 nginx.conf 配置文件,指定訪問位置并添加 stub_status 配置cd /usr/local/nginx/conf cp nginx.conf nginx.conf.bak vim /usr/local/nginx/conf/nginx.conf ...... http { ......server {listen 80;server_name www.ljm.com;charset utf-8;location / {root html;index index.html index.php;}##添加 stub_status 配置##location /status { #訪問位置為/statusstub_status on; #打開狀態統計功能access_log off; #關閉此位置的日志記錄}} }6、基于授權的訪問控制
1、生成用戶密碼認證文件 yum -y install httpd-tools htpasswd -c /usr/local/nginx/passwd.db qiaodaer chown nginx /usr/local/nginx/passwd.db chmod 400 /usr/local/nginx/passwd.db #修改權限的話需要修改屬主,因為文件屬主為root,而運行nginx的賬號為nginx2、修改主配置文件相對應目錄,添加認證配置項 vim /usr/local/nginx/conf/nginx.conf ......server {location / {......##添加認證配置##auth_basic "secret";auth_basic_user_file /usr/local/nginx/passwd.db;}}3、重啟服務,訪問測試 nginx -t systemctl restart nginx瀏覽器訪問 http://192.168.184.70或www.ljm.com7、基于客戶端的訪問控制
訪問控制規則如下: deny IP/IP 段:拒絕某個 IP 或 IP 段的客戶端訪問。 allow IP/IP 段:允許某個 IP 或 IP 段的客戶端訪問。 規則從上往下執行,如匹配則停止,不再往下匹配。vim /usr/local/nginx/conf/nginx.conf ......server {location / {......##添加控制規則##deny 192.168.184.31; #拒絕訪問的客戶端 IPallow all; #允許其它IP客戶端訪問}}systemctl restart nginx三、構建 Nginx 虛擬 web 主機
1、基于域名的虛擬主機
①、為虛擬主機提供域名解析
方法一:部署DNS域名解析服務器,來提供域名解析(腳本內容)
#!/bin/bash mount /dev/sr0 /mnt yum -y install bind &> /dev/null#修改主配置文件 :/etc/named.conf sed -i 's/127.0.0.1;/any;/' /etc/named.conf sed -i 's/localhost;/any;/' /etc/named.conffor ((;;)) doread -p "請輸入你需要配置的域名(例www.abc.com):" a b=`echo $a | awk -F "." 'BEGIN{OFS="."}{$2=$2;print$2,$3}'` c=`ip a | grep "ens33" | awk NR==2'{print}' | awk -F/ '{print$1}' | awk '{print$2}'`#修改區域配置文件 :/etc/named.rfc1912.zonesecho "zone \"$b\" IN {type master;file \"$b.zone\";allow-update { none; }; };" >> /etc/named.rfc1912.zones#修改區域數據配置文件 :/var/named/named.localhost cd /var/named cp -p named.localhost $b.zonesed -i "2c @ IN SOA $b. rname.invalid. (" /var/named/$b.zone sed -i "8c NS $b." /var/named/$b.zone && sed -i "8 s/^/\t/" /var/named/$b.zone sed -i "9c A $c" /var/named/$b.zone && sed -i "9 s/^/\t/" /var/named/$b.zone sed -i "10c www IN A $c" /var/named/$b.zone#添加指定dns服務器 sed -i "2c nameserver $c" /etc/resolv.confread -p "是否需要繼續添加(y/n):" d case $d in y) continue ;;n)#關閉系統防火墻和系統安全機制 systemctl stop firewalld setenforce 0#開啟dns服務 systemctl restart named break ;; *) echo "請正確輸入" systemctl stop firewalld setenforce 0 systemctl restart named break esac done方法二:在 /etc/hosts 文件中臨時配置域名與IP地址的映射
echo "192.168.184.70 www.wangdaer.com www.qiaodaer.com" >> /etc/hosts②、為虛擬主機準備網頁文檔
mkdir -p /var/www/html/qiaodaer mkdir -p /var/www/html/wangdaer echo "<h1>www.qiaodaer.com</h1>" > /var/www/html/qiaodaer/index.html echo "<h1>www.wangdaer.com</h1>" > /var/www/html/wangdaer/index.html③、添加虛擬主機配置
vim /usr/local/nginx/conf/nginx.conf ...... http { ......server {listen 80;server_name www.qiaodaer.com; #設置域名www.qiaodaer.comcharset utf-8;access_log logs/www.qiaodaer.access.log; location / {root /var/www/html/qiaodaer; #設置www.qiaodaer.com 的工作目錄index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 80;server_name www.wangdaer.com; #設置域名www.wangdaer.comcharset utf-8;access_log logs/www.wangdaer.access.log; location / {root /var/www/html/wangdaer;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}} }④、重啟服務并進行測試
2、基于 IP地址 的虛擬主機
ifconfig ens33:0 192.168.184.31 netmask 255.255.255.0 vim /usr/local/nginx/conf/nginx.conf ...... http { ...... server {listen 192.168.184.70:80; #設置監聽地址server_name www.wangdaer.com;charset utf-8;access_log logs/www.wangdaer.access.log; location / {root /var/www/html/wangdaer;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}} server {listen 192.168.184.170:80; #設置監聽地址server_name www.qiaodaer.com;charset utf-8;access_log logs/www.qiaodaer.access.log; location / {root /var/www/html/qiaodaer;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;} } }systemctl restart nginx
3、基于端口的虛擬主機
vim /usr/local/nginx/conf/nginx.conf ...... http { ......server {listen 192.168.184.70:666; #設置監聽 666 端口server_name www.qiaodaer.com;charset utf-8;access_log logs/www.qiaodaer.access.log; location / {root /var/www/html/qiaodaer;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 192.168.184.70:888; #設置監聽 888 端口server_name www.wangdaer.com;charset utf-8;access_log logs/www.wangdaer.access.log; location / {root /var/www/html/wangdaer;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;} }systemctl restart nginx
總結
以上是生活随笔為你收集整理的详解 nginx 配置文件及构建 web 虚拟主机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存规格:影响电脑速度和稳定性的关键
- 下一篇: 内存超频,让你的电脑速度狂飙2800