摘要:前言是一個高性能的和反向代理服務(wù)器,也是一個服務(wù)器安裝安裝源碼安裝安裝以為例設(shè)置源設(shè)置代理公網(wǎng)情況下可忽略代理命令安裝源碼安裝下載源碼模塊擴(kuò)展安裝在安裝的時候往往會有配置需求同時如果我們想要安裝一個第三方的模塊則需要進(jìn)行設(shè)
前言
Nginx (engine x) 是一個高性能的HTTP和反向代理服務(wù)器,也是一個IMAP/POP3/SMTP服務(wù)器安裝
yum安裝
源碼安裝
yum安裝
以CentOS6.5 為例
設(shè)置yum源, vi etc/yum.repos.d/nginx.repo
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/6/x86_64/ gpgcheck=0 enabled=1
設(shè)置代理 vi /etc/yum.conf (公網(wǎng)情況下可忽略)
proxy=代理IP
命令安裝
sudo yum install nginx
源碼安裝
下載nginx源碼
wget http://nginx.org/download/nginx-1.13.12.tar.gz tar -xvzf nginx-1.13.12.tar.gz cd nginx-1.13.12 ./configure --prefix=/usr/local/nginx make sudo make install模塊擴(kuò)展安裝
在安裝nginx的時候, 往往會有配置需求, 同時如果我們想要安裝一個第三方的模塊, 則需要 --add-module 進(jìn)行設(shè)置. 例如下面要求
已知第三方模塊
nginx-http-concat 前端JS,CSS文件合并資源
git clone https://github.com/alibaba/nginx-http-concat.git # nginx 編譯 ./configure --add-module=/path/to/nginx-http-concat make sudo make install源碼重新編譯
有時候, 我們需要給現(xiàn)有的nginx加入一些擴(kuò)展模塊. 那么就需要通過對應(yīng)的版本的源代碼, 重新configure, 具體步驟如下:
# 老的nginx 執(zhí)行 nginx -V /usr/local/nginx/sbin/nginx -V # nginx 同一版本下的源碼 執(zhí)行 configure, 附加新的模塊 ./configure --prefix=/usr/local/nginx --add-module=/path/to/nginx-http-concat # 編譯 make # 備份老的nginx cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old # 將objs目錄下產(chǎn)生新的 nginx 覆蓋老的nginx cp objs/nginx /usr/local/nginx/sbin/nginx # 如果出現(xiàn)文件打開錯誤,運行下面這句 mkdir -p /dev/shm/nginx_temp/client_body # 測試 sudo /usr/local/nginx/sbin/nginx -t # 平滑重啟nginx sudo /usr/local/nginx/sbin/nginx -s reloadnginx配置 基本配置
user www www; # 用戶名 用戶組
http {
# http服務(wù)設(shè)置
# 引入多個mime類型
include mime.types;
# 啟用gzip壓縮
gzip on;
# 錯誤頁面重定向
error_page 400 401 402 403 404 405 408 410 412 413 414 415 500 501 502 503 506 = /error.html;
# 引入額外配置
include vhosts/*.conf;
}
虛擬主機(jī)配置
用戶請求 host為 liylblog.com 主機(jī)時, 將訪問 root 目錄下的資源
server {
listen 80;
server_name liylblog.com;
root /home/www/liyblog/html;
}
路由匹配設(shè)置
server {
listen 80;
server_name liylblog.com;
root /home/www/liyblog/html;
# 最長優(yōu)先匹配, 所以 / 為最后匹配規(guī)則
location / {
# 設(shè)置默認(rèn)的index文件名稱
index index.html index.html;
try_files $uri $uri/;
}
# 以.php結(jié)尾或者 .php/xxx 結(jié)尾的路徑, ~ 表示大小寫敏感
location ~ .php($|/) {
# 規(guī)則
}
# 大小寫敏感, 以 /img/ 開頭的資源路徑將被匹配
# /img/logo.png
# /img/avatar.png
location ^~ /img/ {
# 規(guī)則
}
# 大小寫敏感, 匹配 /api 資源
location ^~ = /api {
f( !-e $request_filename )
{
rewrite ^/api /api/ last;
}
}
}
nginx 配置負(fù)載均衡
server {
listen 80;
server_name liylblog.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;
# 重定向請求
proxy_pass http://proxy_stream;
}
}
# 多臺機(jī)器代理, 背后可能是其它web服務(wù)器
upstream proxy_stream {
server 192.168.1.1 max_fails=3 fail_timeout=30s;
server 192.168.1.2 max_fails=3 fail_timeout=30s;
}
反向代理
PHP-FPM代理
server {
listen 80;
server_name liylblog.com;
root /home/www/liyblog/html;
access_log /usr/local/nginx/logs/liylblog.access.log;
error_log /usr/local/nginx/logs/liylblog.error.log;
location / {
index index.html index.htm index.php;
if (!-e $request_filename) { ## if 后面必須有空格
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
# 大小寫敏感, 匹配.php后綴結(jié)尾或者 .php/ 結(jié)尾的路徑
location ~ .php($|/) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_split_path_info ^(.+?.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
client_max_body_size 100M;
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
include fastcgi_params;
}
}
Node.js 代理
server {
listen 80;
server_name liylblog.com;
root /home/www/liyblog/html;
access_log /usr/local/nginx/logs/liylblog.access.log;
error_log /usr/local/nginx/logs/liylblog.error.log;
location @proxy {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:7001;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_key sfs$request_uri$scheme;
}
location / {
autoindex on;
index index.html index.htm;
# 嘗試訪問地址 例如, 訪問 $root/foo, $root/foo/index.html, $root/foo/index.htm, $proxy/foo;
try_files $uri $uri/ @proxy;
}
}
小結(jié)
nginx 是一個優(yōu)秀的代理服務(wù)器, 還有很多未知的知識亟待去挖掘
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.hztianpu.com/yun/39891.html
摘要:前言是一個高性能的和反向代理服務(wù)器,也是一個服務(wù)器安裝安裝源碼安裝安裝以為例設(shè)置源設(shè)置代理公網(wǎng)情況下可忽略代理命令安裝源碼安裝下載源碼模塊擴(kuò)展安裝在安裝的時候往往會有配置需求同時如果我們想要安裝一個第三方的模塊則需要進(jìn)行設(shè) 前言 Nginx (engine x) 是一個高性能的HTTP和反向代理服務(wù)器,也是一個IMAP/POP3/SMTP服務(wù)器 安裝 yum安裝 源碼安裝 yum安...
摘要:應(yīng)該如何解決本文將給出若干提示,如何在生產(chǎn)環(huán)境中使用。路由匹配服務(wù)發(fā)現(xiàn)負(fù)載均衡跨容器通訊非??煽?。在單個端口上運行一個服務(wù),節(jié)點的任意主機(jī)都可以訪問,負(fù)載均衡完全在后臺實現(xiàn)。 上周數(shù)人云給大家分享了——《你可能需要的關(guān)于Docker Swarm的經(jīng)驗分享》今天給大家?guī)磉@位作者大大的后續(xù)文章——《Docker Swarm在生產(chǎn)環(huán)境中的進(jìn)階指南》 當(dāng)在本地開發(fā)環(huán)境中使用Docker,或者...
閱讀 2551·2021-10-08 10:17
閱讀 1904·2021-09-06 15:02
閱讀 2595·2019-08-29 17:30
閱讀 2720·2019-08-29 13:24
閱讀 1579·2019-08-29 11:12
閱讀 3409·2019-08-28 17:52
閱讀 716·2019-08-26 11:30
閱讀 3656·2019-08-26 11:01