首页 > 系统相关 >Nginx-常用配置命令

Nginx-常用配置命令

时间:2023-01-04 22:12:57浏览次数:69  
标签:常用 http 命令 header server Nginx proxy https

1.文件上传大小

http {
	# 设置nginx文件上传大小限制
	client_max_body_size 200M;
	client_body_buffer_size 50M;
	fastcgi_intercept_errors on;
}

2.http 转 https

方式①:http端口

server {
	rewrite ^(.*)$ https://$host$1 permanent;
}

方式②:同时http、https端口
转载:https://blog.csdn.net/afreon/article/details/97142847

 server {
        listen       80;
        listen       443 ssl;
        server_name  localhost;

        if ($scheme = http) {
                return 301 https://$host$request_uri;
        }
}

java redirect重定向https跳转http问题,如果https访问nginx通过nginx proxy_pass到http的tomcat服务正常能够访问,但是java redirect就跳转到http,导致报错“400 Bad Request: The plain HTTP request was sent to HTTPS port”。

解决方法:

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_set_header X-Forwarded-Proto https;
proxy_pass http://172.17.6.114:8082;
proxy_redirect http:// https://;

实现流程是根据nginx的不同执行阶段,来完成Location http到https。

1)proxy_pass执行前,先设置了request head host 为https外网访问的域名+端口
2)proxy_pass执行后,tomcat结果返回response
3)proxy_redirect修改response中的location中的协议http为https外网访问的协议。

注:java redirect重定向主要是通过访问tomcat服务的请求head项来决定的,默认是http协议,域名是通过读取host地址,默认host中不包括访问端口。

方式③:错误页从定向

server {
        listen 8009 ssl;
        server_name localhost;

        error_page 497 https://$host$uri?$args;
}

3.隐藏版本号

http {
	 server_tokens off;
}

4.负载均衡(upstream)

upstream cszhi.com {
	ip_hash;
	server 192.168.8.11:80;
	server 192.168.8.12:80 down;
	server 192.168.8.13:8009 max_fails=3 fail_timeout=20s;
	server 192.168.8.146:8080;
}

注意,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。
在上面的设定中,通过upstream指令指定了一个负载均衡器的名称cszhi.com。这个名称可以任意指定,在后面需要的地方直接调用即可。

Nginx的负载均衡模块目前支持4种调度算法,下面进行分别介绍,其中后两项属于第三方的调度方法。

  • 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响;

  • Weight:指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下;

  • ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题;

  • fair:比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块;

  • url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

在HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:

  • down:表示当前的server暂时不参与负载均衡;

  • backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻;

  • max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误;

  • fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用

5.禁止文件缓存

开发环境可使用

location ~* \.(js|css|png|jpg|gif)$ {
    add_header Cache-Control no-store;
}

6.防盗链

防止文件被其他网站使用

location ~* \.(gif|jpg|png)$ {
    # 只允许 192.168.0.1 请求资源
    valid_referers none blocked 192.168.0.1;
    if ($invalid_referer) {
       rewrite ^/ http://$host/logo.png;
    }
}

7.文件压缩

server {
    # 开启gzip 压缩
    gzip on;
    # 设置gzip所需的http协议最低版本 (HTTP/1.1, HTTP/1.0)
    gzip_http_version 1.1;
    # 设置压缩级别,压缩级别越高压缩时间越长  (1-9)
    gzip_comp_level 4;
    # 设置压缩的最小字节数, 页面Content-Length获取
    gzip_min_length 1000;
    # 设置压缩文件的类型  (text/html)
    gzip_types text/plain application/javascript text/css;
}

8.指定定错误页面

# 根据状态码,返回对于的错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /source/error_page;
}

9.解决跨域

现在http://xx_domainhttps://github.com发起请求一定会出现跨域。

## 配置反向代理的参数
server {
    listen    8080;
    server_name xx_domain

    ## 1. 用户访问 http://xx_domain,则反向代理到 https://github.com
    location / {
        proxy_pass  https://github.com;
        proxy_redirect     off;
        proxy_set_header   Host             $host;        # 传递域名
        proxy_set_header   X-Real-IP        $remote_addr; # 传递ip
        proxy_set_header   X-Scheme         $scheme;      # 传递协议
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

10.其他

server {
	# 监听端口 HTTPS
	listen 443 ssl;
	server_name ably.com;

	# 配置域名证书
	ssl_certificate C:\WebServer\Certs\certificate.crt;
	ssl_certificate_key C:\WebServer\Certs\private.key;
	ssl_session_cache shared:SSL:1m;
	ssl_session_timeout 5m;
	ssl_protocols SSLv2 SSLv3 TLSv1;
	ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
	ssl_prefer_server_ciphers on;

	index index.html index.htm index.php;
	root /data/www/;
	
	location ~ .*\.(php|php5)?$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		include fastcgi.conf;
	}

	# 配置地址拦截转发,解决跨域验证问题
	location /oauth/ {
		proxy_pass https://localhost:13580/oauth/;
		proxy_set_header HOST $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}

	# 图片缓存时间设置
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
		expires 10d;
	}

	# JS和CSS缓存时间设置
	location ~ .*\.(js|css)?$ {
		expires 1h;
	}


	# 设定查看Nginx状态的地址.StubStatus模块能够获取Nginx自上次启动以来的工作状态,此模块非核心模块,需要在Nginx编译安装时手工指定才能使用
	location /NginxStatus {
		stub_status on;
		access_log on;
		auth_basic "NginxStatus";
		auth_basic_user_file conf/htpasswd;
		#htpasswd文件的内容可以用apache提供的htpasswd工具来产生.
	}
}

标签:常用,http,命令,header,server,Nginx,proxy,https
From: https://www.cnblogs.com/a999/p/17026130.html

相关文章

  • Linux基本命令及操作
    基本操作1、tty:查看窗口对应文件名root@ubuntu2004:~#tty/dev/pts/02、whoami查看当前用户身份root@ubuntu2004:~#whoamiroot3、whoami查看连接远程主机情况r......
  • Dos命令以及特性和版本
    #基本的Dos命令 ##打开CMD的方式 1.开始+系统+命令提示符2.win键+R输入CMD打开控制台3.在任意文件夹下面,按住Shift键+鼠标右击,在此处打开命令窗口4.资源管理......
  • 常用组合恒等式
    常用组合恒等式恒等式1\[{n\choosek}={n\choosen-k}\\\]恒等式2\[{n\choosek}=\frac{n}{k}{n-1\choosek-1}\\\]杨辉三角\[{n\choosek}={n-1\choosek......
  • JS获取字符串长度的常用方法,汉字算两个字节
    JS获取字符串实际长度(双字节字符、汉字算两个字符)//第一种GetLength=function(str){varrealLength=0;for(vari=0;i<str.length;i++){......
  • APP测试 - Monkey遍历命令详解
    1、启动monkey#对手机点击1000次,不限制应用adbshellmonkey1000#限制在设置的应用中,点击1000次adbshellmonkey-pcom.cleanmaster.mguard1000#设置点击事件......
  • FreeSWITCH命令大全
    FreeSWITCH启动、查看、及关闭FreeSWITCH一般安装在路径/usr/local/freeswitch,可执行程序位于/usr/local/freeswitch/bin下,配置文件位于/usr/local/freeswitch/conf......
  • C语言--常用进程间通信方式
    管道管道是一种队列型的数据结构,它的数据从一端输入,另一端输出。管道最常见应用就是连接两个进程的输入和输出,将一个进程的输入作为另一个进程的输出。shell中有专门的管......
  • 常用的正则表达式
    常用的正则表达式示例:简单密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度......
  • FreeSWITCH常用知识点
    1、FreeSWITCH控制台快捷键(4.4)2、FreeSWITCH目录结构(5.2) sounds目录 、storage目录 、conf目录 。  3、配置文件(5.3&3.3)  4、vars.xml——FreeSWIT......
  • 1_Linux文件管理方式及常用命令
    一:文件管理方式:Windows:分磁盘C: D: E: →目录/文件Linux:没有【磁盘】的概念,是以树状形式管理,根目录(顶层目录):"/",根下的目录:bin,etc,root,home,xxx.txt等等目录结......