Nginx一键安装包

Nginx一键安装包

系统:Linux CentOs7.9

描述:可以直接运行脚本安装nginx,nginx.conf配置文件已提取出来,方便维护,配置文件和shell脚本都配备了完整解释

目录结构:

├─package
| ├─nginx.conf
| └─nginx-1.20.2.tar.gz
└─shell
  ├─nginx.sh
  └─nginx_service

安装包下载地址:

链接:https://pan.baidu.com/s/1hE6qxZUCGra7wlexWlytPQ
提取码:bq6g

nginx.sh:

用命令sh nginx.sh运行即可安装:

#!/bin bash
# install nginx shell script
# os: Linux CentOs7.9
# author: cenmingzhong
# date: 2022-3-3 16:01:00

#nginx压缩包包名
#下载地址 https://nginx.org/download/
FILE_TAR=nginx-1.20.2tar.gz
#nginx文件名
FILE_NAME=nginx
#服务名前缀
SERVICE_PREFIX=process_
#服务名
SERVICE_NAME=nginx
#软连接目的地址
INSTALL_LINK_DIR=/opt/soft
#nginx安装地址
INSTALL_DIR=$INSTALL_LINK_DIR/install
#存放数据的地址
DATA_DIR=$INSTALL_LINK_DIR/data
#存放shell文件的地址
SHELL_DIR=$INSTALL_LINK_DIR/shell

#export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
#-f  代表[变量名称]中为函数名称。
#-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
#-p  列出所有的shell赋予程序的环境变量。
#定义环境变量,软链接地址/opt/soft
export INSTALL_LINK_DIR=$INSTALL_LINK_DIR
#定义环境变量,nginx安装地址/opt/soft/install
export INSTALL_DIR=$INSTALL_DIR
#定义环境变量,存放数据地址/opt/soft/data
export DATA_DIR=$DATA_DIR


#一、文件比较运算符
#1. -e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]
#2. -d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ]
#3. -f filename 如果 filename为常规文件,则为真 如: [ -f /usr/bin/grep ]
#4. -L filename 如果 filename为符号链接,则为真 如: [ -L /usr/bin/grep ]
#5. -r filename 如果 filename可读,则为真 如: [ -r /var/log/syslog ]
#6. -w filename 如果 filename可写,则为真 如: [ -w /var/mytmp.txt ]
#7. -x filename 如果 filename可执行,则为真 如: [ -L /usr/bin/grep ]
#8. filename1-nt filename2 如果 filename1比 filename2新,则为真 如: [
#/tmp/install/etc/services -nt /etc/services ]
#9. filename1-ot filename2 如果 filename1比 filename2旧,则为真 如: [
#/boot/bzImage -ot arch/i386/boot/bzImage ]
#二、字符串比较运算符(请注意引号的使用,这是防止空格扰乱代码的好方法)
# 1. -z string  如果 string长度为零,则为真 如:  [ -z "$myvar" ]
# 2. -n string  如果 string长度非零,则为真  如: [ -n "$myvar" ]
# 3. string1= string2  如果 string1与 string2相同,则为真 如:  ["$myvar" = "one two three"]
# 4. string1!= string2  如果 string1与 string2不同,则为真 如:  ["$myvar" != "one two three"]
#三、算术比较运算符
# 1. num1-eq num2  等于 如: [ 3 -eq $mynum ]
# 2. num1-ne num2  不等于 如: [ 3 -ne $mynum ]
# 3. num1-lt num2  小于 如: [ 3 -lt $mynum ]
# 4. num1-le num2  小于或等于  如:[ 3 -le $mynum ]
# 5. num1-gt num2  大于  如:[ 3 -gt $mynum ]
# 6. num1-ge num2  大于或等于 如: [ 3 -ge $mynum ]


#mkdir(英文全拼:make directory)命令用于创建目录
#-p 确保目录名称存在,不存在的就建一个。


#如果nginx安装文件夹不存在
if [ ! -d $INSTALL_DIR ]; then
    #新建文件夹
    mkdir -p $INSTALL_DIR
fi
#如果存放数据文件夹不存在
if [ ! -d $DATA_DIR ]; then
    #新建文件夹
    mkdir -p $DATA_DIR
fi
#如果存放SHELL脚本文件夹不存在
if [ ! -d $SHELL_DIR ]; then
    #新建文件夹
    mkdir -p $SHELL_DIR
fi

#tar(英文全拼:tape archive )命令用于备份文件
#-x或--extract或--get:从备份文件中还原文件;
#-z或--gzip或--ungzip:通过gzip指令处理备份文件;
#-f<备份文件>或--file=<备份文件>:指定备份文件;
#解压nginx
tar -xzf package/$FILE_TAR -C $INSTALL_DIR

#如果文件不存在
if [ ! -e /opt/$SERVICE_NAME ]; then
  # ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接
  # 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,
  # 放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间
  # 必要参数:
  #-b 删除,覆盖以前建立的链接
  #-d 允许超级用户制作目录的硬链接
  #-f 强制执行
  #-i 交互模式,文件存在则提示用户是否覆盖
  #-n 把符号链接视为一般目录
  #-s 软链接(符号链接)
  #-v 显示详细的处理过程

  #软链接nginx源地址
  ln -s $INSTALL_DIR/$FILE_NAME /opt/$SERVICE_NAME
fi


#\cp 强制覆盖,不弹出提示
#cp (复制档案或目录)
#参数:
#-a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制);
#-p :连同档案的属性一起复制过去,而非使用预设属性;
#其他参数意义:
#-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
#-f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
#-i :若目的档(destination)已经存在时,在覆盖时会先询问是否真的动作!
#-l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
#-r :递归持续复制,用于目录的复制行为;
#-s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
#-u :若 destination 比 source 旧才更新 destination。

#强制复制libpcre.so.0覆盖到/usr/lib64/
#下载链接http://rpmfind.net/linux/remi/enterprise/4/remi/i386/pcre-6.6-1.el4.remi.i386.rpm
#\cp -fR package/libpcre.so.0 /usr/lib64/

#强制复制nginx.conf
\cp -fR package/nginx.conf /opt/$SERVICE_NAME/conf
#强制复制nginx服务
\cp -fR shell/$SERVICE_PREFIX$SERVICE_NAME /etc/init.d/


#chmod:用于改变文件或目录的访问权限,用户用它控制文件或目录的访问权限;
#u 表示“用户(user)”,即文件或目录的所有者。
#g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
#o 表示“其他(others)用户”。
#a 表示“所有(all)用户”。它是系统默认值。
#r(read,读,权值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限;
#w(write,写,权值为2):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限;
#x(execute,执行,权值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限;

#给所有用户nginx服务的可执行权限
chmod a+x /etc/init.d/$SERVICE_PREFIX$SERVICE_NAME


# chkconfig 命令用于检查,设置系统的各种服务
#--add  增加所指定的系统服务,让 chkconfig 指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
#--del  删除所指定的系统服务,不再由 chkconfig 指令管理,并同时在系统启动的叙述文件内删除相关数据。
#--level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。
#on、off、reset用于改变service的启动信息。
#on表示开启,off表示关闭,reset表示重置。

#增加nginx服务到service
/usr/sbin/chkconfig --add /etc/init.d/$SERVICE_PREFIX$SERVICE_NAME
#启动nginx的service
/usr/sbin/chkconfig $SERVICE_PREFIX$SERVICE_NAME on

#service命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、查看状态(status)

#执行nginx的service
/usr/sbin/service  $SERVICE_PREFIX$SERVICE_NAME restart

nginx_service:

使用servcie nginx_service start 命令启动

#!/bin/bash
#
# author:cenmingzhong
#
# chkconfig: 2345 50 50
# description: nginx_service

#nginx执行程序文件路径
nginx="/opt/nginx/sbin/nginx"
#nginx配置文件路径
config_file="/opt/nginx/conf/nginx.conf"
#服务名
service_name="nginx"
#nginx启动命令
start_cmd="$nginx -c $config_file"
#nginx停止命令
stop_cmd="$nginx -s stop"
#nginx重启命令
restart_cmd="$nginx -s reload"

#判断是否已经运行
function isExist() {
  #  ps ax   //查看当前运行中的进程,可以查看当前进程的PID和状态(S代表睡眠,SW代表睡眠和等待,R表示运行中)

  #  grep 命令用于查找文件里符合条件的字符串
  #  -i 或 --ignore-case : 忽略字符大小写的差别。
  #  -v 或 --invert-match : 显示不包含匹配文本的所有行。

  #  awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
  #  $0  表示整个当前行
  #  $1  每行第一个字段
  #  print 是awk打印指定内容的主要命令
  pid=`ps ax | grep -i '/opt/nginx/sbin/nginx' | grep -i 'master process' | grep -v grep | awk '{print $1}'`
  #如果pid长度为0,不存在,返回0,否则返回1
  if [ -z "$pid" ]; then
      return 0
  else
      return 1
  fi
}

#检查nginx是否已经启动,时长为40秒以上
function checkStart() {
  local flag=0
  #循环20次,判断是否已经启动
  for i in {1..20} ; do
      #判断是否已经运行
      isExist

      #$0 这个程式的执行名字
      #$n 这个程式的第n个参数值,n=1..9
      #$* 这个程式的所有参数,此选项参数可超过9个。
      #$# 这个程式的参数个数
      #$$ 这个程式的PID(脚本运行的当前进程ID号)
      #$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
      #$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
      #$- 显示shell使用的当前选项,与set命令功能相同
      #$@ 跟$*类似,但是可以当作数组用

      #如果返回值等于1,则说明nginx已经运行,退出循环
      if [ $? = 1 ]; then
          flag=1
          break
      fi
      #还没运行,则睡两秒
      sleep 2
  done
  if [ $flag = 1 ]; then
      echo "${service_name}(${pid}) has been started"
  else
      echo "${service_name} has not been started"
  fi
}

#检查nginx是否已经停止
function checkStop() {
    local flag=0
  #循环20次,判断是否已经启动
  for i in {1..20} ; do
      #判断是否已经运行
      isExist

      #$0 这个程式的执行名字
      #$n 这个程式的第n个参数值,n=1..9
      #$* 这个程式的所有参数,此选项参数可超过9个。
      #$# 这个程式的参数个数
      #$$ 这个程式的PID(脚本运行的当前进程ID号)
      #$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
      #$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
      #$- 显示shell使用的当前选项,与set命令功能相同
      #$@ 跟$*类似,但是可以当作数组用

      #如果返回值等于0,则说明nginx停止,退出循环
      if [ $? = 0 ]; then
          flag=1
          break
      fi
      #还没运行,则睡两秒
      sleep 2
  done
  if [ $flag = 1 ]; then
      echo "${service_name} has been stopPed"
  else
      echo "${service_name}(${pid}) has not been stopPed"
  fi
}

# $0 这个程式的执行名字
# $1 第一个参数
#nginx服务入口,判断参数,提供相应操作
case "$1" in
#启动nginx
start)
  #判断是否启动
  isExist
  #如果nginx没有运行,则启动
  if [ $? = 0 ]; then
      echo "start ${service_name}..."
      #启动命令
      $start_cmd
      #检查是否已经启动
      checkStart
  #如果已经运行
  else
      echo "${service_name}(${pid}) is running"
      #   exit(0)表示程序正常退出,非0表示非正常退出,但具体是1还是-1,没有特别的规定
      exit -1;
  fi
  ;;
#停止nginx
stop)
  #判断是否启动
  isExist
  #如果nginx没有运行
  if [ $? = 0 ]; then
      echo "${service_name} is not running"
      #   exit(0)表示程序正常退出,非0表示非正常退出,但具体是1还是-1,没有特别的规定
      exit 0;
  #如果已经运行,则停止
  else
      echo "stop ${service_name}..."
      #停止命令
      $stop_cmd
      #检查是否已经停止
      checkStop
  fi
  ;;
#获取nginx运行状态
status)
  #判断是否启动
  isExist
  #如果nginx没有运行
  if [ $? = 0 ]; then
      echo "${service_name} is not running"
      #   exit(0)表示程序正常退出,非0表示非正常退出,但具体是1还是-1,没有特别的规定
      exit 0;
  #如果已经运行
  else
      echo "${service_name}(${pid}) is running"
      #   exit(0)表示程序正常退出,非0表示非正常退出,但具体是1还是-1,没有特别的规定
      exit 0;
  fi
  ;;
#重启nginx
restart)
  #调用stop方法
  $0 stop
  #调用start方法
  $0 start
  ;;
#输入其他参数则提示
*)
  echo "Please use start, stop, restart, status as first argument"
  ;;

esac

nginx.conf:

 
#Nginx用户及组:用户 组。window下不指定
#user  nobody;
 
#工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。
worker_processes  1;
 
#错误日志:存放路径。
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid(进程标识符):存放路径
pid       /usr/local/nginx/logs/nginx.pid;
 
#一个进程能打开的文件描述符最大值,理论上该值因该是最多能打开的文件数除以进程数。
#但是由于nginx负载并不是完全均衡的,所以这个值最好等于最多能打开的文件数。
#LINUX系统可以执行 sysctl -a | grep fs.file 可以看到linux文件描述符。
worker_rlimit_nofile 65535;
 
 
events {
	#使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
	use epoll;
	
	#单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  1024;
	
	#客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,
	#一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
	#client_header_buffer_size 4k;
}
 
 
http {
	#设定mime类型,类型由mime.type文件定义
    include       mime.types;
	
    default_type  application/octet-stream;
	
	#日志格式设置
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
	
		
	#用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径
	#记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息
	#access_log  logs/host.access.log  main;
	#access_log  logs/host.access.404.log  log404;
	
	#服务器名字的hash表大小
    server_names_hash_bucket_size 128;
	
	#客户端请求头缓冲大小。
    #nginx默认会用client_header_buffer_size这个buffer来读取header值,
    #如果header过大,它会使用large_client_header_buffers来读取。
    #如果设置过小HTTP头/Cookie过大 会报400 错误 nginx 400 bad request
    #如果超过buffer,就会报HTTP 414错误(URI Too Long)
    #nginx接受最长的HTTP头部大小必须比其中一个buffer大
    #否则就会报400的HTTP错误(Bad Request)
    #client_header_buffer_size 32k;
    #large_client_header_buffers 4 32k;
	
	
	#隐藏ngnix版本号
    #server_tokens off;
	
	#忽略不合法的请求头
    #ignore_invalid_headers   on;
	
	#让 nginx 在处理自己内部重定向时不默认使用  server_name设置中的第一个域名
    #server_name_in_redirect off;
	
	
	#客户端请求体的大小
    #client_body_buffer_size    8m;
   
  
    #开启文件传输,一般应用都应设置为on;若是有下载的应用,则可以设置成off来平衡网络I/O和磁盘的I/O来降低系统负载
    sendfile        on;
	
	
	#告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送。
    #tcp_nopush     on;
	
	#tcp_nodelay off 会增加通信的延时,但是会提高带宽利用率。在高延时、数据量大的通信场景中应该会有不错的效果
    #tcp_nodelay on,会增加小包的数量,但是可以提高响应速度。在及时性高的通信场景中应该会有不错的效果
	tcp_nodelay on;
	
 
    #长连接超时时间,单位是秒
    keepalive_timeout  65;
 
    #gzip模块设置,使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度。
    #gzip  on;                     #开启gzip
    #gzip_min_length  1k;          #最小压缩大小
    #gzip_buffers     4 16k;       #压缩缓冲区
    #gzip_http_version 1.0;        #压缩版本
    #gzip_comp_level 2;            #压缩等级
    #gzip_types   text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;#压缩类型
    
	
	
	
    #负载均衡
	#max_fails为允许请求失败的次数,默认为1
	#weight为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率。
    # upstream myServer{
    #   server  192.168.247.129:8080 max_fails=3 weight=2;
    #   server  192.168.247.129:8081 max_fails=3 weight=4;	
    # }
	
	
	
    #server {
    #    listen       80;
	#	
	#	#IP/域名可以有多个,用空格隔开
	#	server_name  192.168.247.129;
	#	#server_name  www.test.com;
	#
    #    #charset koi8-r;
	#
    #    #access_log  logs/host.access.log  main;
	#	
	#   #反向代理配置,
    #   #将所有请求为www.test.com的请求全部转发到upstream中定义的目标服务器中。
    #   location / {
	#   			
	#	    #此处配置的域名必须与upstream的域名一致,才能转发。
	#	    proxy_pass http://myServer;
	#	    #proxy_pass http://192.168.247.129:8080;
	#		
	#		 proxy_connect_timeout 20;          #nginx跟后端服务器连接超时时间(代理连接超时)
	#		
    #        #client_max_body_size       10m;   #允许客户端请求的最大单文件字节数
    #        #client_body_buffer_size    128k;  #缓冲区代理缓冲用户端请求的最大字节数
	#		 #proxy_send_timeout         300;   #后端服务器数据回传时间(代理发送超时)
    #        #proxy_read_timeout         300;   #连接成功后,后端服务器响应时间(代理接收超时)
    #        #proxy_buffer_size          4k;    #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    #        #proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
    #        #proxy_busy_buffers_size    64k;   #高负荷下缓冲大小(proxy_buffers*2)
    #        #proxy_temp_file_write_size 64k;   #设定缓存文件夹大小,大于这个值,将从upstream服务器传    		
	#		
	#		root   html;
	#		
	#		#定义首页索引文件的名称
	#		index  index.html index.htm;
    #    }
	#
    #   #动静分离 静态资源走linux 动态资源走tomcat
    #   # 注意 /source/image/下面寻找资源
    #   location /image/ {
    #       root /source/;
	#       autoindex on;
    #   } 		
	#
	#
	#    # 出现50x错误时,使用/50x.html页返回给客户端
    #    error_page   500 502 503 504  /50x.html;
    #    location = /50x.html {
    #        root   html;
    #    }
    #}
		
		
		
	#下面是配置生产环境中既支持HTTP又支持HTTPS,保证用户在浏览器中输入HTTP也能正常访问
	
	# SSL证书 配置                                 
	ssl_certificate     	cert/yphtoy.com.pem;   #加密证书路径
	ssl_certificate_key	cert/yphtoy.com.key;       #加密私钥路径
	ssl_protocols		TLSv1 TLSv1.1 TLSv1.2;     #加密协议
	ssl_session_cache	shared:SSL:1m;             #加密访问缓存设置,可以大大提高访问速度
	ssl_session_timeout	10m;                       #加密访问缓存过期时间
	ssl_ciphers		HIGH:!aNULL:!MD5;              #加密算法
	ssl_prefer_server_ciphers on;	               #是否由服务器决定采用哪种加密算法
	
	# 负载均衡
	upstream api_upstream
	{
	    server 127.0.0.1:8080 max_fails=3 weight=1;
		server 127.0.0.1:8081 max_fails=3 weight=1;
	}
	
	#api 接口(兼容HTTP)
	server{
	    listen 80;
		server_name api.test.com;
		# 301重定向跳转到HTTPS接口
		return 301 https://$server_name$request_uri;
		error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
	}
	
	#api 接口(兼容HTTPS)
	server{
	    listen 443 ssl;
		server_name api.test.com;
		location / {
		   root html;
		   index  index.html index.htm;
		   proxy_pass http://api_upstream;
		   
		   #语法: proxy_cookie_path oldpath replacepath;
		   #oldpath就是你要替换的路径 replacepath 就是要替换的值
		   #作用:同一个web服务器下面多个应用之间能获取到cookie
		   proxy_cookie_path /api/ /;
		   
		   #服务端接收的请求头Cooke值不变
		   proxy_set_header Cookie $http_cookie;
		}
	}
	
	#管理后台端(兼容HTTP)
	server{
	    listen 80;
		server_name manage.test.com;
		# 301重定向跳转到HTTPS接口
		return 301 https://$server_name/$request_uri;
		error_page 500 502 503 504 /50x.html;
		location = /50x.html{
			 root html	
		}
	}
	
	#管理后台端(兼容HTTPS)
	server{
	    listen 443 ssl;
		server_name manage.test.com;
		location / {
		    root /home/test/web/dist
			
			index /index.html;
			
			
			#语法:try_files 【$uri】 【 $uri/】 【参数】
			#当用户请求https://manage.test.com/login时,
			#一.如果配置了上面的默认index,会依次请求
			#1./home/test/web/dist/login       查找有没有login这个文件,没有的话
			#2./home/test/web/dist/index.html  有就直接返回
			
			#二.如果没有配置了上面的默认index或者配置了没有找到对应的资源,会依次请求
			#1./home/test/web/dist/login        查找有没有login这个文件,没有的话
			#2./home/test/web/dist/login/       查找有没有login这个目录,没有的话
		    #3.请求https://manage.test.com/index.html  nginx内部做了一个子请求
			
			#三.总的来说,index的优先级比try_files高,请求会先去找index配置,这里最后一个参数必须存在
			try_files $uri $uri/ /index.html;	
			
			
			
			#解决跨域问题
            #允许跨域请求地址(*表示全部,但是无法满足带cookie请求,因为cookie只能在当前域请求)
            add_header Access-Control-Allow-Origin $http_origin;
            #允许接收cookie和发送cookie
            add_header Access-Control-Allow-Credentials 'true';
            #允许请求的方法
            add_header Access-Control-Allow-Methods 'GET,POST,DELETE,PUT,OPTIONS';
            #允许请求头(Content-Type:请求数据/媒体类型 x-requested-with:判断请求是异步还是同步 自定义header 比如 token)
            add_header Access-Control-Allow-Headers $http_access_control_request_headers;
            #浏览器缓存请求头信息,1800秒内,只会有1次请求,不会出现"OPTIONS"预请求,节约资源
            #add_header Access-Control-Max-Age '1800';
		    if ($request_method = 'OPTIONS') {
                    return 204;
            }
			
			
			#服务端HttpServletRequest可以获得用户的真实ip
		    proxy_set_header X-Real-IP $remote_addr;
			
			#服务端HttpServletRequest可以获得用户的真实ip和经过的每一层代理服务器的ip
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			
			#服务端接收的请求头Host值不变
            proxy_set_header Host  $http_host;
			
            proxy_set_header X-Nginx-Proxy true;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值