目錄php
Nginx安裝方式:html
yum源安裝mysql
目錄結構:nginx
源碼包安裝c++
目錄結構:sql
Nginx中支持PHP數據庫
Nginx配置反向代理服務器centos
正常代理服務器
Nginx是一個高性能的HTTP和反向代理服務器,該程序由俄羅斯Rambler.ru 站點開發,Nginx由於性能穩定、低系統資源消耗而聞名。默認監聽端口: tcp / 80
nginx安裝包官網下載地址:http://nginx.org/en/download.html
yum安裝會比源碼包編譯安裝簡單的多,默認會安裝許多模塊,但缺點是若是之後想安裝第三方模塊那就沒辦法了。
可是默認的 yum 源不少都沒有nginx包的,想安裝nginx,咱們能夠在 /etc/yum.repos.d/ 下新建一個 nginx.repo 文件,而後加入下面的內容 (Redhat 7 和 Centos 7 中適用)
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 //若是是Centos6的系統,把baseurl中的7換成6便可
而後 yum -y install nginx 安裝便可。
程序可執行文件: /usr/sbin/nginx
主要配置文件: /etc/nginx/conf.d/default.conf
網頁主頁目錄:/usr/share/nginx/html/
日誌文件目錄:/var/log/nginx/
控制服務: systemctl start / stop / restart / status nginx
訪問服務器,若是看到下面頁面,說明nginx服務器搭建完成!
安裝完成後,nignx默認安裝在 /usr/local/ 目錄下
程序可執行文件: /usr/local/nginx/sbin/nginx
配置文件: /usr/local/nginx/conf/nginx.conf
網頁主頁目錄:/usr/loca/nginx/html/
日誌文件目錄:/usr/local/nginx/log/
可是,當你去 /usr/local/nginx/sbin/ 下執行 ./nginx 命令運行程序時,有可能會報錯
[root@Centos sbin]# ./nginx ./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
報這個錯是由於咱們的 libpcre 的相關庫文件在 /usr/loca/lib/ 下,而nginx默認讀的是 /lib64/ 下的。因此,咱們只須要添加一個軟連接便可解決: ln -s /usr/local/lib/libpcre.* /lib64/
解決了上面的問題,咱們就能夠直接啓動nignx了:咱們可使用這個命令啓動nginx : /usr/local/nginx/sbin/nginx ,也能夠去 /usr/local/nginx/sbin/ 目錄下直接 nginx 啓動。可是這樣未免太麻煩了。因而,咱們也能夠建立一個軟連接: ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx ,這樣,不管咱們到了哪一個位置,均可以直接 nginx 啓動。而後中止的話,能夠用 nginx -s stop 。
ningx中支持php的包爲 php-fpm (php fastcgi process manager) , PHP-FPM提供了更好的PHP進程管理方式,能夠有效控制內存和進程、能夠平滑重載PHP配置。
安裝php-fpm: yum -y install php-fpm
而後修改nginx配置文件: /etc/nginx/conf.d/default.conf
location / { //默認全部形式的後綴都由這裏處理 root /usr/share/nginx/html; //主頁目錄 index index.php index.html index.htm; //在這裏加上 index.php } // 把下面這幾行的註釋給取消,而後修改 location ~ \.php$ { //將後綴爲 .php 的由這裏處理 root /usr/share/nginx/html; //主頁目錄 fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; //這裏須要修改 include fastcgi_params; }
修改完nginx配置文件後,開啓php-fpm: systemctl start php-fpm
而後讓nginx從新加載配置文件: nginx -s reload
php的配置文件: /etc/php.ini 是用來控制php解析器
/etc/php-fpm.conf是控制php-fpm守護進程的
yum -y install php-mysql
將外界客戶端發來的請求,轉發給真正提供服務的服務器。
修改nginx配置文件:/etc/nginx/nginx.conf ,在最後的 http{ } 中加入如下內容
// 下面這些代碼的意思是將本機80號端口接受來的消息轉發給 192.168.10.10 的 80 號端口 upstream www.xie.com{ //這裏的域名隨便填,可是要和下面的對應 server 192.168.10.10:80; //真正提供服務的服務器的ip地址和端口 } server{ listen 80; // 監聽80號端口發過來的消息 location /{ proxy_pass http://www.xie.com; index index.html index.php; } }
//這些代碼的意思是將80端口接收到的信息轉發給 192.168.10.10的80端口,而將接受到的 8080端口的信息轉發給 192.168.10.20的8080端口 upstream www.xie.com{ server 192.168.10.10:80; } upstream www.xie2.com{ server 192.168.10.20:8080; } server{ listen 80; location /{ proxy_pass http://www.xie.com; index index.html index.php; } } server{ listen 8080; location /{ proxy_pass http://www.xie2.com; index index.html index.jsp; } }
1:輪詢:每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端服務器down掉,能自動剔除 upstream www.xie.com{ server 192.168.10.10:80; server 192.168.10.20:80; } server{ listen 80; location /{ proxy_pass http://www.xie.com; index index.html index.php index.jsp; } } 2:ip_hash:每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決session的問題。 upstream www.xie.com{ ip_hash; server 192.168.10.10:80; server 192.168.10.20:80; } server{ listen 80; location /{ proxy_pass http://www.xie.com; index index.html index.php index.jsp; } } 3:weight:指定輪詢概率,weight和訪問比率成正比,用於後端服務器性能不均的狀況。 upstream www.xie.com{ server 192.168.10.10:80 weight=10; server 192.168.10.20:80 weight=20; } server{ listen 80; location /{ proxy_pass http://www.xie.com; index index.html index.php index.jsp; } } 4: fair : 按後端服務器的響應時間來分配請求,響應短的服務器優先分配 upstream www.xie.com{ server 192.168.10.10:80 weight=10; server 192.168.10.20:80 weight=20; fair; } server{ listen 80; location /{ proxy_pass http://www.xie.com; index index.html index.php index.jsp; } }
以上的反向代理的工做原理,都是根據監聽不一樣端口,而後將流量轉發到真正服務器的不一樣端口。
還有一種反向代理是監聽80端口,而後根據請求的頁面的不一樣後綴(.php / .jsp / 等等),來轉發給不一樣的端口進行解析。
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } location ~ \.php$ { //當請求的後綴是以 .php結尾的話,將流量轉發給本地的800端口 proxy_pass http://127.0.0.1:800; } location ~ \.jsp$ { //當請求的後綴是以 .jsp結尾的話,將流量轉發給本地的8080端口 proxy_pass http://127.0.0.1:8080; } location ~ \.(jpg|png)$ { //當請求的後綴是以 .jpg或.png 結尾的話,則請求 /img 目錄下 root /img; } }