nginx之Http代理和Websocket代理详解

 更新时间:2025年03月05日 14:28:19   作者:fkjavaer  
本文介绍了在Ubuntu上安装和配置Nginx的步骤,包括启动、停止、重新加载配置、重新打开日志文件、查看进程等常用命令,还详细介绍了Nginx的静态代理和负载均衡功能,包括轮询、最少连接数、iphash和权重等策略

1.nginx安装

按照nginx官方的教程,在Ubuntu上安装nginx

http://nginx.org/en/linux_packages.html#Ubuntu

按照上面的安装,会为我们注册nginx的service,我们可以通过service nginx start来启动nginx

2.nginx配置文件

默认的配置文件是:nginx.conf,一般存放的位置是/usr/local/nginx/conf, /etc/nginx, or /usr/local/etc/nginx.

3.nginx常用命令

nginx启动之后,我们可以使用-s参数来执行一些控制命令

3.1 帮助命令

nginx -?
nginx -h

3.2 快速停止

nginx -s stop

3.3 优雅停止

nginx -s quit

3.4 重新加载配置文件

nginx -s reload

一旦主进程接收到重新加载配置的信号,它将检查新的配置文件的语法有效性,并尝试应用其中的配置。

如果应用新配置成功,主进程将启动新的工作进程,并向旧的工程发送消息,请求将它们关闭。

如果新配置失败,主进程将回滚配置更改并继续使用旧配置。

3.5 重新打开日志文件

nginx -s reopen

3.6 nginx主进程id

nginx主进程的id将写在/usr/local/nginx/logs/var/run目录中的nginx.pid文件中

我们也可以通过以下命令来杀死nginx主进程:

# pid表示主进程id
kill -s quit pid

3.7 查看nginx进程

ps -ax | grep nginx

3.8 以指定的配置文件运行

nginx -c file

4. nginx静态代理

server {
        listen       80; # 监听的端口
        server_name  localhost; # 服务名称,对应的ip或者域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / { # 如果访问localhost,请求将会被转发到nginx根目录下的html文件夹中的index.html或者index.htm
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html { # 服务器错误将会被转发到nginx根目录下的html文件夹中的50x.html
            root   html;
        }
    }

5 nginx做代理服务器

localhost:8082/api/test请求转发到http://192.168.1.92:8080/test

proxy_pass http://192.168.1.92:8080/;

结尾的/必须有,否则请求会被转发到http://192.168.1.92:8080/api/test

http {
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

	server {
		listen 8082;
		server_name localhost;
		location /api/ {
			proxy_pass http://192.168.1.92:8080/;# 这个结尾的/必须有,否则请求会被代理到http://192.168.1.92:8080/api/test
		}
	}

}

6.负载均衡

负载均衡的策略有轮询、最少连接数、iphash、权重。默认使用的负载均衡策略是轮询。

6.1 轮询

http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

6.2 最少连接

http {
    upstream myapp1 {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

6.3 ip hash

http {
    upstream myapp1 {
        ip_hash;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

6.4 权重

http {
    upstream myapp1 {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

6.5相关参数

# 设置server的权重值,默认是1
weight=number

# 最大连接数,限制代理服务器的最大连接数,默认值为0,表示没有限制
max_conns=number

# 服务器的不可用时间,当连接失败时
fail_timeout=time

# 将server标记为备用,当主server不可用时,将请求备用server
backup

# 将server标记为停止
down

7.websocket代理

http {
    upstream backend {
        server srv1.example.com;

    }

    server {
        listen 80;

        location /chat/ {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx+php的新基础镜像制作全过程

    nginx+php的新基础镜像制作全过程

    这篇文章主要介绍了基于alpine基础镜像,构建含nginx、php服务的新基础镜像的过程,文中通过代码示例和图文结合的方式介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-03-03
  • 修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等)

    修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等)

    这篇文章主要介绍了修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等),需要的朋友可以参考下
    2016-03-03
  • Nginx启用proxy_cache缓存的方法

    Nginx启用proxy_cache缓存的方法

    本篇文章主要介绍了Nginx启用proxy_cache缓存的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Nginx强制跳转Https(Http访问跳转Https)

    Nginx强制跳转Https(Http访问跳转Https)

    这篇文章主要为大家介绍了Http访问强制跳转到Https的几种方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • ELK监控nginx日志的整体流程

    ELK监控nginx日志的整体流程

    这篇文章主要介绍了ELK监控nginx日志总结,整体流程是先把logstash启动,读取nginx日志数据存储到ES中,再用kibana进行统计以及可视化,本文给大家介绍的非常详细,需要的朋友参考下吧
    2022-03-03
  • Nginx HttpHeader增加几个关键的安全选项问题小结

    Nginx HttpHeader增加几个关键的安全选项问题小结

    本文给大家介绍Nginx HttpHeader增加几个关键的安全选项问题小结,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-12-12
  • 关于Nginx中虚拟主机的一些冷门知识小结

    关于Nginx中虚拟主机的一些冷门知识小结

    这篇文章主要给大家介绍了关于Nginx中虚拟主机的一些冷门知识,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • nginx获取客户端真实ip的常用方法

    nginx获取客户端真实ip的常用方法

    这篇文章给大家介绍了在nginx中获取客户端真实IP的两种常用方法,文中有详细的代码供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • 全面了解Nginx中的HTTP协议相关模块配置

    全面了解Nginx中的HTTP协议相关模块配置

    HTTP的处理是Nginx服务器的最重要功能,这里我们就带大家来全面了解Nginx中的HTTP协议相关模块配置,需要的朋友可以参考下
    2016-07-07
  • Nginx的跨域、alias、优化方式

    Nginx的跨域、alias、优化方式

    这篇文章主要介绍了Nginx的跨域、alias、优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论