常見的web架構php
LAMP - Linux +Apache +MySQL + PHPhtml
LNMP - Linux +Nginx + Mysql + PHPnginx
RHEL開源 Linux系統 RHEL CentOS Fedora 開源 --- 開放源代碼web
Nginx和Apache自己對動態網頁沒有處理能力 ----> PHPsql
Apache + PHP ---->apxs命令 ---> DSO方式 把libphp5.so模塊插入到apache 配置中apache
Nginx + PHP --->經過php-fpm的服務 默認9000的端口windows
nginx處理高併發針對靜態小文件(1M) 3W併發 - Nginx 消耗內存資源150M瀏覽器
官方網站: www.nginx.org Nginx是俄羅斯的站點開發安全
Nginx 國內用的多性能優化
Apache 全球最多
Lighttpd 貼吧 豆瓣
Tengine 淘寶 天貓商城
1) Nginx的安裝
兩種方式:
1.yum二進制安裝
2.源碼編譯 ---- > LNMP 都是編譯
默認站點目錄:
apache - DocumentRoot htdocs
Nginx -- root參數指明 html目錄
默認網頁:
apache配置文件中---- Directory -- index.html
nginx index index.html
1、Nginx的基本配置
關於Nginx模塊 (解耦) module --- 插件(都是配置文檔中的內容)
Nginx使用不一樣的模塊來實現不一樣的功能,主要有2組模塊:
1)Nginx core module (必須的)
包括: Mian模塊 Events模塊
2)standard HTTP module (不是必須的 可是缺省的安裝的 不建議改動)
經典包括:
Core
Access
FastCGI
Gzip (壓縮模塊,性能優化)
Log 日誌模塊(訪問 錯誤 警告日誌)
Proxy Nginx 的反向代理
Upstream Nginx負載均衡
提示: 模塊能夠經過官網查詢http://nginx.org/en/docs/
2、Nginx目錄結構(重點目錄 + 文件的介紹)
3、Nginx主配置文件介紹
Nginx的配置文件是一個純文本文件,整個配置文件是以塊的形式組織的。每一個模塊
通常用{}進行表示
位於最高層 Main --->Events --->http
[root@thinkmo ~]# egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf
worker_processes 1; //worker模式(經過一個進程 使用多個線程去處理請求) prefork模式(所有使用進程) work進程數,寫cpu的核數
events {
worker_connections 1024; //work最大鏈接數
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80; 監聽的端口
server_name localhost; 域名
location / { 默認站點
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
虛擬主機====> 一臺機器 運行多個web服務
基於域名
基於IP
基於端口
Apache ---->哪一個標籤 定義虛擬主機? <VirtualHost>
Nginx ---server {}
1.安全 互聯網病毒--->掃面端口漏洞
2.成本 IP地址固定IP 每一年年費
4、配置虛擬主機(基於域名)
egrep -v "#|^$" nginx.conf > log.lol
[root@salt01 conf]# cp log.lol nginx.conf
cp:是否覆蓋"nginx.conf"? y
worker_processes 3;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.thinkmo.cn;
charset utf-8;
root html/www; #默認站點 /appliation/nginx/html/wwww
index index.html #默認網頁/appliation/nginx/html/wwww/index.html
}
server {
listen 80;
server_name blog.thinkmo.cn;
charset utf-8;
root html/; #默認站點 /appliation/nginx/html/wwww
index index.html #默認網頁/appliation/nginx/html/wwww/index.html
}
server {
listen 80;
server_name bbs.thinkmo.cn;
charset utf-8;
root html/bbs; #默認站點 /appliation/nginx/html/wwww
index index.html #默認網頁/appliation/nginx/html/wwww/index.html
}
}
一臺服務器 一個iP 三個域名
192.168.1.200 -- www.thinkmo.cn blog.thinkmo.cn bbs.thinkmo.cn
修改windows下hosts文件
配置站點
域名解析 ---DNS正向解析
1.去哪找? 本機hosts文件
2.若是hosts沒有 --- >代理服務器
3.若是代理服務器沒有 ---> 全球13個DNS根服務器 ----> www.baidu.com
4.返回給代理服務器
總結Nginx配置虛擬主機的流程:
1) 複製一段完整的server{}標籤 注意: 要放在http的結束的大括號裏面
2)更改server_name 和 對應的網頁的root根目錄
3)檢查文件語法 平滑啓動
[root@thinkmo ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.12.2/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.12.2/conf/nginx.conf test is successfu
[root@thinkmo ~]# /usr/local/nginx/sbin/nginx -s reload
4)建立server_name 對應的網頁的根目錄 而且創建測試文件
5)對客戶端server_name 的主機作host解析 或者DNS設置
6)瀏覽器訪問
連接不上:拍錯步驟
1)測試連通性 ping (基於icmp協議 -- 一去(echo-request)一回(echo-reply))
Tracert 追蹤路徑
2)測試端口 telnet
3)wget或者curl 是否響應
防火牆 權限
5、測試nginx的連接數
在配置文件的http中添加一段,並在hosts文件中添加解析
6、跳轉301重定向
兩種實現方式:
1)別名
在配置文件server字段的servername後面添加一個域名
當咱們訪問thinkmo.cn的時候就會自動訪問www.thinkmo.cn
Apache指定別名 用什麼標籤?
ServerAlias標籤
2)跳轉
server {
listen 80;
server_name www.thinkmo.cn thinkmo.cn;
root html/www;
index index.html;
rewrite ^/(.*) http://www.thinkmo.cn/$1 permanent;
}
7、
經過IP --->沒有變化應---->遭受IP惡意綁定
你有域名 對方有IP沒有域名 用你的域名 養IP
server { 第一個server標籤
listen 80;
location / {
deny all;
}
}
8、基於端口的虛擬主機
修改配置文件的server字段中的listen端口號,能夠實現端口訪問 如:服務器IP:端口號
當域名與端口號都存在且並不匹配時,將按照端口號爲準
9、基於IP的虛擬主機
與前者相似都是修改配置文件的server字段中的listen字段,能夠在端口號前面加上虛擬IP,這樣訪問的對面servername頁面。
10、Nginx日誌 使用第三種
Apache上的日誌輪詢幾種形式? 3種
1.cronolog
2.ratatelog
3.cron + mv + graceful