摘要:前言是一个高性能的和反向代理服务器,也是一个服务器安装安装源码安装安装以为例设置源设置代理公网情况下可忽略代理命令安装源码安装下载源码模块扩展安装在安装的时候往往会有配置需求同时如果我们想要安装一个第三方的模块则需要进行设
前言
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器安装
yum安装
源码安装
yum安装
以CentOS6.5 为例
设置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
设置代理 vi /etc/yum.conf (公网情况下可忽略)
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模块扩展安装
在安装nginx的时候, 往往会有配置需求, 同时如果我们想要安装一个第三方的模块, 则需要 --add-module 进行设置. 例如下面要求
已知第三方模块
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源码重新编译
有时候, 我们需要给现有的nginx加入一些扩展模块. 那么就需要通过对应的版本的源代码, 重新configure, 具体步骤如下:
# 老的nginx 执行 nginx -V /usr/local/nginx/sbin/nginx -V # nginx 同一版本下的源码 执行 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目录下产生新的 nginx 覆盖老的nginx cp objs/nginx /usr/local/nginx/sbin/nginx # 如果出现文件打开错误,运行下面这句 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服务设置 # 引入多个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; }虚拟主机配置
用户请求 host为 liylblog.com 主机时, 将访问 root 目录下的资源
server { listen 80; server_name liylblog.com; root /home/www/liyblog/html; }路由匹配设置
server { listen 80; server_name liylblog.com; root /home/www/liyblog/html; # 最长优先匹配, 所以 / 为最后匹配规则 location / { # 设置默认的index文件名称 index index.html index.html; try_files $uri $uri/; } # 以.php结尾或者 .php/xxx 结尾的路径, ~ 表示大小写敏感 location ~ .php($|/) { # 规则 } # 大小写敏感, 以 /img/ 开头的资源路径将被匹配 # /img/logo.png # /img/avatar.png location ^~ /img/ { # 规则 } # 大小写敏感, 匹配 /api 资源 location ^~ = /api { f( !-e $request_filename ) { rewrite ^/api /api/ last; } } }
nginx 配置负载均衡
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; } } # 多台机器代理, 背后可能是其它web服务器 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后缀结尾或者 .php/ 结尾的路径 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; } }小结
nginx 是一个优秀的代理服务器, 还有很多未知的知识亟待去挖掘
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/39891.html
摘要:前言是一个高性能的和反向代理服务器,也是一个服务器安装安装源码安装安装以为例设置源设置代理公网情况下可忽略代理命令安装源码安装下载源码模块扩展安装在安装的时候往往会有配置需求同时如果我们想要安装一个第三方的模块则需要进行设 前言 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 安装 yum安装 源码安装 yum安...
摘要:应该如何解决本文将给出若干提示,如何在生产环境中使用。路由匹配服务发现负载均衡跨容器通讯非常可靠。在单个端口上运行一个服务,节点的任意主机都可以访问,负载均衡完全在后台实现。 上周数人云给大家分享了——《你可能需要的关于Docker Swarm的经验分享》今天给大家带来这位作者大大的后续文章——《Docker Swarm在生产环境中的进阶指南》 当在本地开发环境中使用Docker,或者...
阅读 2415·2021-10-08 10:17
阅读 1806·2021-09-06 15:02
阅读 2519·2019-08-29 17:30
阅读 2635·2019-08-29 13:24
阅读 1482·2019-08-29 11:12
阅读 3319·2019-08-28 17:52
阅读 645·2019-08-26 11:30
阅读 3560·2019-08-26 11:01