簡單的lnnmp傳輸拓撲圖javascript
Nginx1主要是對外網提供網站服務,既然是對外網的提供服務器,那麼咱們就要考慮問題了。外網的網絡帶寬有限,這裏對外網的傳輸咱們就使用壓縮傳輸;同時咱們也但願數據的安全性,這裏也須要提供https的加密傳輸;最重要的一點是這臺服務器能夠向後端轉發客戶端的請求。php
Nginx2提供動態和靜態數據給前端Nginx1,這裏有一個很是嚴重的問題,這臺主機不處理動態數據只是把動態數據轉發給php-mysql,假如直接讓代理服務器Nginx1把請求轉發到php-fpm上。css
mysql提供數據庫服務,php-fpm提供PHP動態數據的處理html
改良後的lnmp傳輸拓撲圖前端
這樣改良以後,會產生一個問題,前端的代理服務器Nginx1處理壓力會變大,由於正則配置的性能徹底不如直接轉發。可是網站的請求有限,暫且採用這種。java
# 目錄mysql
網絡關係nginx
mysql和php-fpm的配置sql
Nginx1的配置數據庫
Nginx2的配置
總結
# 網絡關係
這裏個人實驗環境是一臺Windows主機,使用的是vmwear,使用的虛擬機是centos7
Nginx1有兩個網卡,一個設置的爲橋接172.16.29.2,另外一個設置的爲僅主機模式192.168.95.129,安裝Nginx-1.10.2
Nginx2有一個僅主機模式的網卡192.168.95.132,安裝Nginx-1.10.2
php-fpm僅主機模式網卡192.168.95.131,安裝php-fpm,php-mysql
MySQL僅主機模式的網卡192.168.95.130,安裝mariadb-server
# mysql和php-fpm的配置
### php-fpm的配置
php-fpm依賴於http或Nginx
yum install php-fpm php-mysql -y vim /etc/php-fpm.d/www.conf
listen = 0.0.0.0:9000 #監聽在本機的全部網卡上 listen.allowed_clients = 192.168.95.132 #容許這個ip訪問 pm.status_path = /status #開啓狀態頁
mkdir -pv /var/www/html/phpwind #提供phpwind文件 cd unzip phpwind_UTF8_8.7.1.zip -d /nginx/html/phpwind/ chown nginx:nginx /var/www/html/phpwind/ chown -R nginx:nginx /var/www/html/phpwind/
### mysql的配置
yum isntall mairadb-server -y mysql <<eof grant all on pwdb.* to 'pwuser'@'192.168.95.131' identified by 'pwpasswd'; eof
# Nginx1的配置
cd wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.2-1.el7.ngx.x86_64.rpm yum install ./nginx-1.10.2-1.el7.ngx.x86_64.rpm -y cd /etc/nginx/conf.d mv default.conf{,.bak} vim www1.conf
server { #強制使用https通訊 listen 80; server_name www1.oldking.org; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443; server_name www1.oldking.org; ssl on; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; location ~* \.php$ { #把php請求發送給php-fpm主機 fastcgi_pass 192.168.95.131:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/phpwind/upload$fastcgi_script_name; include fastcgi_params; fastcgi_param HTTPS on; } location ~* ^/(status|ping)$ { #把php狀態信息發送給php-fpm主機 include fastcgi_params; fastcgi_pass 192.168.95.131:9000; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; } location / { #非靜態和php數據,由Nginx1提供 root /nginx/html/phpwind/upload; index index.php; } location ~* \.(jpg|png|gif|js|css)$ { #靜態數據指向Nginx2 proxy_pass http://192.168.95.132; } }
vim ../nginx.conf #在http字段內添加以下內容,提供壓縮傳輸 gzip on; gzip_comp_level 3; gzip_min_length 4; gzip_types text/xml text/css application/javascript;
mkdir -pv /nginx/html/phpwind #提供phpwind文件 cd unzip phpwind_UTF8_8.7.1.zip -d /nginx/html/phpwind/ chown nginx:nginx /nginx/html/phpwind/ chown -R nginx:nginx /nginx/html/phpwind/
# Nginx2的配置
cd #安裝Nginx並提供配置文件 wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.2-1.el7.ngx.x86_64.rpm yum install ./nginx-1.10.2-1.el7.ngx.x86_64.rpm -y cd /etc/nginx/conf.d mv default.conf{,.bak} vim www1.conf
server { listen 80; location / { root /var/www/html/phpwind/upload; index index.php; } }
mkdir -pv /nginx/html/phpwind #提供phpwind文件 cd unzip phpwind_UTF8_8.7.1.zip -d /nginx/html/phpwind/ chown nginx:nginx /nginx/html/phpwind/ chown -R nginx:nginx /nginx/html/phpwind/
# 總結
全站https須要業務代碼的支持,提供靜態數據的服務器須要使用~*匹配而後指定,使用/來匹配的話數據會直接從Nginx2主機獲取數據,而且不加處理的返回給Nginx1服務器,而後返回客戶端。