dryu999 发表于 2018-11-11 12:26:28

nginx telnet sshd

  nginx小结
  一. (引子) Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的十分轻量级的HTTP   和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是 Apache服务器不错的替代品。Nginx是俄罗斯人编写的十分轻量级的HTTP服务器。
  1.你通过命令curl   -I163.com
  curl-I qq.com
  curl   -I taobao.com
  curl    -I sina.com
  。。。。。。。。
  均可查看各个大型网站所使用的服务是否是nginx,有的网站可以显示版本号,说明一下,对于一个好的管理员来说,最好不要显示这些版本号,因为这样让一些不法分子知道你的版本号之后容易对你的网站***呢。从网站或者服务器上下载合适版本的nginx,处已nginx-1.0.6.tar.gz版本为例,下载之后解压缩,产生目录nginx-1.0.6,   cd    nginx-1.0.6/进入目录,在此目录下
  1../configure( 是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,在当前目录中生成 Makefile 文件(还有其它本文无需关心的文件),该命令的执行必须在你解压的第一层路径执行,即顶级路径)
  2 .   make(make 程序就按照当前目录中的 Makefile 文件的指示将源代码编译为二进制文件,最后将这些二进制文件移动(即安装)到指定的地方(仍然按照 Makefile 文件的指示)。
  3make insall (这条命令来进行安装这一步一般需要你有 root 权限(因为要向系统写入文件)
  (以上三步是编译源码的三部曲)
  在上述三步中可能会在编译检测的时候报错,可能会提示你安装一些软件,
  yuminstall-ypcre-devel   openssl-develgcczlib-devel
  (gcc 是因为那个配置文件使用C编写的)
  二.
  1,安装
  useradd-s /sbin/nologin -M nginx(添加用户,因为nginx文件的的使用用户是nginx,也可以以后用的时候添加)
  cd   /nginx-1.0.6
  vi   auto/cc/gcc
  将#debug
  #CFLAGS=“$CFLAGS -g”(这一行如果不注释,du -sh /usr/local/nginx 等一会编译完成程序会有几兆,注释之后就剩几百K了)
  vi    src/core/nginx.h
  #defineNGINX_VERSION "1.0.6"
  #defineNGINX_VER "nginx"(去掉后面的版本号,这样为了安全起见,外界访问的时候不会对外公开)
  (#这里的#并不是注释,而是C语言的预定义)
  ./configure--prefix=/usr/local/nginx--user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
  (指出用户,用户组,--prefix用于指明安装路径,这里指的是是将所有的安装文件等全部放在指定的目录中,要是你要卸载该配置文件,直接删除此目录文件即可,即是:rm -rf /usr/local/nginx 即可。--with-http_stub_status_modules是状态加载模块,默认的不加载。--with-http_ssl_module支持加密,)
  make(make clean 或者make tidy。make clean删除源代码(C\C++ code)生成的执行文件和所有的中间目标文件)
  make install
  ln -s /usr/local/nginx/sbin   /usr/sbin   (建立软连接)
  或者是写进:
  vi .bash_profile
  PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin
  source .bash_profile(重新读取文件,将你更新的内容读进去)
  2.(1)配置
  vi /usr/local/nginx/conf/nginx.conf(编辑nginx的主配文件)
  user nginx nginx;(指明使用的用户和组)
  worker_processes 4;(制定工作衍生的进程数)
  error_log logs/error.log info;(错误日志定义类型)
  pid logs/nginx.pid
  events {
  use epoll;(使用高效网络I/O模型)
  worker_connections 1024;(允许的连接数)
  }
  编辑完保存退出,
  nginx -t(用于测试)(注意改动的文件要在/usr/local/nginx/conf/nginx.conf中改动文件哦,切不可在nginx-1.0.6下的文件改动啊,成功说明你改动的正确)
  启动命令:nginx
  外部测试:http:192.168.0.115(此时apache要是关着的哈,也就是/etc/init.d/httpd status 是stop 的。那么此时访问的文件就是/usr/local/nginx/html/index.html)
  停止nginx 服务:
  nginx -s stop
  压力测试:
  ab -n 1000 -c 1000 http://192.168.0.115/index.html
  (ab是apache自带的网络压力测试工具,-n在测试会话中所执行的请求个数,默认时,仅执行一个请求,-c一次产生的请求个数,默认是一次一个)
  Requests per second:    1426.75 [#/sec] (mean)
  在服务器上netstat -altunp 可以查询(在这里是server15)
  注意:在改动配置文件的时候容易造成括号不匹配的情况,故在编辑/usr/local/nginx/conf/nginx.conf(编辑nginx的主配文件)的时候注意的是用vim编辑器.另外注意在./configrue 的时候记得要加选项,-with-http_stub_status_module --with-http_ssl_module,这样在你配置证书的时候才不至于出错,还有需要注意的是在
  nginx: bind() to 0.0.0.0:80 failed (98: Address already in use)
  nginx: bind() to 0.0.0.0:443 failed (98: Address already in use)
  nginx: bind() to 0.0.0.0:80 failed (98: Address already in use)
  nginx: bind() to 0.0.0.0:443 failed (98: Address already in use)

  这样的错误的时候注意是因为nginx 的PID坏了,你应该用killall nginx 杀死与nginx有关的进程,然后用nginx -t 检测配置文件的正确性,nginx 启动服务,nginx -s>  (2).   查看nginx状态的地址
  location /status {
  stub_status on;
  access_log off;
  }
  保存退出,nginx -t(测试修改是否正确)

  nginx-s >  访问:http://192.168.0.115/status
  (3)要想访问https://192.168.0.115
  需要在配置文件中将注释
  server {
  listen 443;
  server_name localhost;
  ssl on;
  ssl_certificate cert.pem;(需要手工生成)
  ssl_crtificate_key   cert.pem;(注意上下的两个key的名字和下面的钥匙的名字一致的)
  ssl_sessio_timeout 5m;
  。。。。。
  ssl_prefer_server_ciphers on;
  location /{
  root/html;(意思是通过https://192.168.0.115来访问的默认目录)

  indexindex.html>  }
  }
  在/etc/pki/tls/certs下执行 make cert.pem
  然后mvcert.pem/usr/local/nginx/conf
  用 netstat -atnlp | grep :443可看到443端口开启了。(注意这个端口的开启得在你在你的nginx 是开启的状态下才可以查看得到的)
  从新启动nginx,然后https://192.168.0.115访问即可
  view 可以查看你刚才设置的证书内容。
  (4) 配置虚拟机
  server {
  listen       80;
  server_namewww15.example.com;
  access_log   logs/www15.example.com.access.log main;
  location / {
  indexindex.html;
  root/www15;
  }
  }

  然后配置好后,nginx -t 测试成功之后,然后从新 nginx -s>  mkdir /www15
  echo `hostname`> index.html
  之后访问http://www15.example.com 即可
  (5)http://wiki.nginx.org/NginxChsLoadBalanceExample可参考
  一个简单的负载均衡的示例,把www.domain.com均衡到本机不同的端口,也可以改为均衡到不同的地址上。
  vi /usr/local/nginx/conf/nginx.conf
  usernginx nginx;
  worker_processes4;
  error_loglogs/error.loginfo;
  pid      logs/nginx.pid;
  events {
  use epoll;
  worker_connections1024;
  }
  http {
  include       mime.types;
  default_typeapplication/octet-stream;
  upstream westos {
  server 192.168.0.75 weight=3;(权重为3意思就是访问的时候这个网页出现的次数为占的比重为3)
  server 192.168.0.31;
  }
  sendfile      on;
  keepalive_timeout65;
  server {
  listen       80;
  server_namedesktop75.example.com;
  location / {
  root html;

  index index.html>  }
  error_page   500 502 503 504/50x.html;
  location = /50x.html {
  root   html;
  }
  }
  server {
  listen       80;
  server_namewww.example.com;
  location / {
  proxy_pass http://westos;(//注意这里的//westos是与之上的upstream 后面的westos同名的。)
  }
  }
  }
  在这里你要注意的是括号的匹配问题,还有就是你配upstream的时候是在虚拟机上,所有你需要多写一个server,由于中间会有扰乱,你可以尝试将无用的注释去掉。
  server_name www.sushan.org;(//在你的客户端访问的时候你输入http://www.sushan.org有可能无法访问,此时你可以在客户端的 /etc/hosts下面下上一条解析: 192.168.0.124www.sushan.org,注意在/etc/hosts下一个IP地址你可以解析很多的地址,也就是所你访问哪个解析地址的时候会给您连接到那个对应的IP地址。不断刷新会在2个负载均衡的机子上刷新,当一台关闭的时候,会自动跳转到下一台)

  然后配置好后,nginx -t 测试成功之后,然后从新 nginx -s>  在访问你的http://www15.example.com刷新会不断变换。
  三。yum install xinetd telnet-server -y
  示例: telnet localhost
  telnet 192.168.0.115
  telnet默认不允许以root身份登陆到服务器上,为了安全。
  vi /etc/xinetd.conf
  Define access restriction defaults
  no_access = 192.168.0.115(不让该ip进入)
  only_from = (只允许)
  cps = 50 10 (意思是每秒连接超过50次后,接下来的十秒不连接)
  instance =50(最大的连接量)
  per-source =10 (并发的)
  ldd /usr/sbin/sshd ldd /usr/sbin/nginx 该命令用于判断某个可执行的 binary 档案含有什么动态函式库
  查看含有 libwrap.so.....的就是支持tcp环绕的。
  使用telent要执行chkconfig --list 后面显示含有telnet ,没有的话要启动chkconfig --level 5 xinetd on
  限制和允许访问ssh 和telnet
  vi /etc/hosts.allow
  添加允许的网段或网址如: sshd:192.168.0.(0之后要有.哦)
  in.telnetd:192.168.0.22
  添加禁止的网段或网址如:sshd:192.168.0.(0之后要有.哦)
  in.telnetd:192.168.0.22
  或者
  在hosts.deny中
  sshd:all
  在hosts.allow中
  sshd:192.168.0.15(禁止所有之后,然后添加允许的网段或者网址)
  在hosts.allow和hosts.deny发生冲突时,以hosts.allow的优先级最高。
  (注意:在改动hosts.allow和hosts.deny中东西时,不用启动任何服务,立即生效)

页: [1]
查看完整版本: nginx telnet sshd