首页 > 系统相关 >nginx篇章

nginx篇章

时间:2024-06-21 15:33:58浏览次数:23  
标签:www set http nginx proxy 篇章 usr

一、基础安装

1、安装依赖

yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre* glibc-devel.x86_64

2、下载安装包

下载地址 https://nginx.org/

3、解压修改,屏蔽版本号(实际使用中,经常会被漏扫,只要又版本号泄露,都会让整改)

tar -zxvf nginx-1.23.4.tar.gz

注:我使用的是版本是1.23.4实际情况根据自身下载对应版本

cd nginx-1.23.4

vim src/http/ngx_http_header_filter_module.c

注:修改位置大概在49行

将nginx删除

注:小技巧 vim打开文件后按a键进行修改esc退出修改,按 :set nu 显示行数,修改完成后执行 :wq保存退出,修改后发现修改错误想要不保存 :q!

vim src/http/ngx_http_special_response.c

注:修改位置在36行

  1. 编译安装

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

注:--prefix= 表示编译后nginx所在目录,可以自定义,如--prefix=/data/nginx 。

显示下面信息表示上述命令执行成功

再次执行

make && make install

上述执行后表示安装成功。

  1. 实际操作修改(内容适用于实际使用情况、在这里的配置可以让你解决实际使用过程中,百分之八十的问题)
  2. 将nginx添加到开机自动启动

vim /etc/systemd/system/nginx.service

[Unit]

Description=The nginx HTTP and reverse proxy server

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStartPre=/usr/local/nginx/sbin/nginx -t

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

注:上述内容添加后

执行下面命令,将nginx添加到服务中

systemctl daemon-reload

systemctl enable nginx

注:sytemctl start nginx (启动nginx)、sytemctl stop nginx (启动nginx)、sytemctl status nginx (查看nginx状态)

  1. 修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

user root;

worker_processes 4;

error_log logs/error.log;

events {

worker_connections 65535;

}

http {

include mime.types;

default_type application/octet-stream;

#修改了nginx输出方式,改为了json格式,方便后面日志的分割

log_format upstreaminfo escape=json '{"remote_addr": "$remote_addr","remote_user": "$remote_user","time_iso8601": "$time_iso8601","request": "$request","status": "$status","body_bytes_sent": "$body_bytes_sent","http_referer": "$http_referer","http_host": "$http_host","upstream_status": "$upstream_status","http_cookie": "$http_cookie","request_body": "$request_body","http_user_agent": "$http_user_agent","http_x_forwarded_for": "$http_x_forwarded_for","request_time": "$request_time","upstream_response_time": "$upstream_response_time"}';

server_names_hash_bucket_size 128;

underscores_in_headers on;

sendfile off;

#屏蔽nginx版本号

server_tokens off;

#nginx限制了文件上传的大小,默认是1M

client_max_body_size 10M;

keepalive_timeout 65;

client_header_buffer_size 512k;

large_client_header_buffers 4 1024k;

proxy_buffer_size 128k;

proxy_buffers 32 128k;

proxy_busy_buffers_size 128k;

#nginx支持websocket

map $http_upgrade $connection_upgrade {

default upgrade;

'' close;

}

#nginx支持websocket

map $http_x_forwarded_proto $thescheme {

default $scheme;

http https;

}

#nginx作为反向代理服务器,可能会配置多个域名(地址),方便后面管理,配置不同的域名对应不同的文件

include /usr/local/nginx/conf/conf.c/*.conf;

}

创建nginx配置文件路径,添加基础配置文件

mkdir /usr/local/nginx/conf/conf.c/

cd /usr/local/nginx/conf/conf.c/

vim localhost.conf

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html;

}

}

注:修改后需要重启nginx ,重启前执行 /usr/local/nginx/sbin/nginx -t 检查配置文件是否正确

执行 systemctl restart nginx 重启nginx

检查nginx是否正常,版本号是否隐藏,server处版本号已经隐藏

  1. 配置支持https的nginx配置

创建ssl证书存放位置,并将ssl文件放到改路径下

mkdir /usr/local/nginx/cert

创建一个https文件

vim www.xxx.com.conf

注:文件名可以随便起结尾必须是 .conf

server {

listen 443 ssl;

server_name www.xxx.com ;

ssl_certificate /usr/local/nginx/cert/www.xxx.com.pem;

ssl_certificate_key /usr/local/nginx/cert/www.xxx.com.key;

ssl_session_timeout 5m;

ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!3DES";

#注 TLSv1 TLSv1.1 SSLv2 SSLv3会有漏洞不支持使用

ssl_protocols TLSv1.2 ;

ssl_prefer_server_ciphers on;

charset utf-8;

#nginx日志会一直增加,查看起来十分麻烦,很难快速定位到,使用下面方法切割日志

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})") {

set $year $1;

set $month $2;

set $day $3;

set $hour $4;

set $minutes $5;

set $seconds $6;

}

#日志输出位置,按照年_月_日_小时分割

access_log /usr/local/nginx/logs/${year}_${month}_${day}_${hour}_www.xxx.com.log upstreaminfo;

#安全防护,屏蔽特殊文件、路径,防止被黑

if ($request_uri ~ doc.html|git|web.config|swagger-ui.html|druid|actuator) {

return 403;

}

#将具体的配置文件指向 .item文件中,可以实现入口地址使用同一个代理地址

include /usr/local/nginx/conf/conf.c/www.xxx.com.item;

}

  1. nginx反向代理实际使用中会遇到的各种写法

#指向根目录

location / {

root html;

index index.html;

}

#指向一个具体的文件路径但是不想将入口传递给下一层,访问时不会讲www这个路径传递给下一层,造成查找/usr/local/nginx/pown/test/www目录,而是直接访问/usr/local/nginx/pown/test/ 的根目录

location /www {

alias /usr/local/nginx/pown/test/;

index index.html;

}

#若依框架页面配置

location /www {

alias /usr/local/nginx/pown/www /;

try_files $uri $uri/ /www /index.html;

index index.html;

}

#反向代理一个接口地址

location /test-api {

proxy_pass http://localhost:31982;

#如果接口是websocket,需要添加

proxy_set_header Upgrade $http_upgrade;

#如果接口是websocket,需要添加

proxy_set_header Connection $connection_upgrade;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Host $http_host;

proxy_set_header X-Forwarded-Port $server_port;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

#限制接口文件上传大小,默认是1M

client_max_body_size 50M;

}

注:proxy_pass http://localhost:31982后面加斜杠和不加斜杠是有区别的,加斜杠不会将location /test-api 中 /test-api 传递给http://localhost:31982,只会将后面的内容传递给http://localhost:31982,如访问https://www.xxx.com/test-api/www,后端收到的请求是http://localhost:31982/www;反之没有添加斜杠后端收到的请求如下:http://localhost:31982/test-api/www。

  1. nginx负载均衡

在nginx.conf 文件中添加

upstream www {

server 192.168.1.100:18001 weight=1 max_fails=2 fail_timeout=5s;

server 192.168.1.101:18001 weight=1 max_fails=2 fail_timeout=5s;

}

注:upstream www中www可以自定义;server表示具体的服务地址,可以是多个;weight表示权重,可以简单的理解为1:1 分配,max_fails和fail_timeout配套使用,上面参数表示如果5秒钟如果失败2次,那么将暂停该server 5秒。

在具体配置中添加

location /test-api {

#使用负载均衡功能,proxy_pass 将不再是具体的地址而是upstream 中定义的名称

proxy_pass http://www;

#如果接口是websocket,需要添加

proxy_set_header Upgrade $http_upgrade;

#如果接口是websocket,需要添加

proxy_set_header Connection $connection_upgrade;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Host $http_host;

proxy_set_header X-Forwarded-Port $server_port;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

#限制接口文件上传大小,默认是1M

client_max_body_size 50M;

}

  1. 特殊负载均衡ip_hash

upstream www {

ip_hash

server 192.168.1.100:18001 weight=1 max_fails=2 fail_timeout=5s;

server 192.168.1.101:18001 weight=1 max_fails=2 fail_timeout=5s;

}

ip_hash表示将同一个源IP的请求指向到同一个server地址,在有共享seesion的情况下进行此特殊配置,其他情况下不需要。使用ip_hash 会导致负载不是很平均。

标签:www,set,http,nginx,proxy,篇章,usr
From: https://www.cnblogs.com/jiachong1994/p/18260608

相关文章

  • Nginx 反向代理 (泛域名->泛域名,https,静态文件)
    Nginx反向代理配置指南(泛域名->泛域名,HTTPS,静态文件)完整版server{#监听80端口listen80;listen443sslhttp2;; #...... #泛域名server_name*.{fromName}.com;#获取"*"参数set$subdm'';if($host~*"(.*......
  • nginx精准禁止特定国家或者地区IP访问
    1、安装依赖dnf-yinstallgcc-c++libtoolgd-develpcrepcre-developensslopenssl-develzlibzlib-devellibmaxminddb-develpcre-develzlib-develgccgcc-c++makegit2、获取NGINX安装包并安装wgethttps://nginx.org/download/nginx-1.26.1.tar.gzgitclo......
  • 呼叫中心上云新篇章:云端转型,开启智能服务新时代
    摘要:云原生技术通过开源软件栈部署微服务应用,优化资源利用率,助力呼叫中心升级改造。一、为什么呼叫中心需要上云?1.1什么是云原生云原生就像一座现代化的城市,其中容器是街区和建筑,微服务是功能模块(如商店、医院和学校),而DevOps则是基础设施和交通系统。这座城市能够快速扩展且......
  • Nginx部署Vue前端项目,部署多个Vue项目
    参考:https://blog.csdn.net/qq_33454884/article/details/89212702启动闪退:https://blog.csdn.net/weixin_66383346/article/details/1326221561.下载安装nginx 下载地址:https://nginx.org/en/download.html  windows版:nginx/Windows-1.27.0解压后必须放在没有中文,没有空格......
  • Nginx流量控制
    目录1、Nginx如何限流2、配置基本的限流3、处理突发4、无延迟的排队5、高级配置示例1、白名单2、location包含多limit_req指令6、配置流量控制相关功能1、配置日志记录2、发送到客户端的错误代码7、nginx流量控制总结 流量限制(rate-limiting),是Nginx中一个......
  • 【调试笔记-20240617-Linux- frp 结合 nginx 实现内网网站在公网发布】
    调试笔记-系列文章目录调试笔记-20240617-Linux-frp结合nginx实现内网网站在公网发布文章目录调试笔记-系列文章目录调试笔记-20240617-Linux-frp结合nginx实现内网网站在公网发布前言一、调试环境操作系统:Windows10专业版调试环境调试目标二、调试步骤公......
  • CentOS7系统搭建web环境 php&nginx&pgsql
    环境:VMware、CentOS-7-x86_64-DVD-2009.iso、nginx-1.26.1、php-7.2.0、postgresql-12php最好安装对应php项目所需版本,否则会出现不兼容问题。一、VMware安装CentOS7操作系统下载LinuxCentos7映像:https://mirrors.aliyun.com/centos/7/isos/x86_64/?spm=a2c6h.25603864.0.......
  • 中电金信:保险业多项举措共绘数字化转型新篇章
    ​​ ​​......
  • 免构建安装 nginx php-fpm 快速运行 php 项目
    文档说明:只记录关键地方;发布时间:2024-06-20需求:linux、macos环境下,免构建安装nginxphp-fpm快速运行php项目运行环境:linux、macos状态:已完成实现原理:静态编译nginx、php-fpm下载nginx、php-fpm脚本和运行时gitclonehttps://gitee.com/jingjingxy......
  • httpsok-v1.13.0支持nginx证书部署管理
    ......