nginx建https站實驗

wKioL1h59KnBK0ziAABmDlW8UU0464.png

簡單的lnnmp傳輸拓撲圖javascript

Nginx1主要是對外網提供網站服務,既然是對外網的提供服務器,那麼咱們就要考慮問題了。外網的網絡帶寬有限,這裏對外網的傳輸咱們就使用壓縮傳輸;同時咱們也但願數據的安全性,這裏也須要提供https的加密傳輸;最重要的一點是這臺服務器能夠向後端轉發客戶端的請求。php

Nginx2提供動態和靜態數據給前端Nginx1,這裏有一個很是嚴重的問題,這臺主機不處理動態數據只是把動態數據轉發給php-mysql,假如直接讓代理服務器Nginx1把請求轉發到php-fpm上。css

mysql提供數據庫服務,php-fpm提供PHP動態數據的處理html

wKioL1h59MDSGWG8AABjbDKuF_8325.png

改良後的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服務器,而後返回客戶端。

相關文章
相關標籤/搜索