java学习

java学习

 

ngnix得到客户端的IP

通常系统出于安全考虑,需要进行权限(账号、密码)和IP白名单控制。如何获取访问来源真实的IP,如果公司网络入口设置负载,自己系统设置nginx代理等操作,会使你达到目的不那么简单直接。

通常情况下我们使用request.getRemoteAddr()就可以获取到客户端ip,但是当我们使用了nginx作为反向代理后,由于在客户端和web服务器之间增加了中间层,因此web服务器无法直接拿到客户端的ip,通过$remote_addr变量拿到的将是反向代理服务器的ip地址。如果我们想要在web端获得用户的真实ip,就必须在nginx这里作一个赋值操作,如下:
proxy_set_header            X-real-ip $remote_addr;
其中这个X-real-ip是一个自定义的变量名,这样用户的真实ip就被放在X-real-ip这个变量里了,然后,在web端可以这样获取:request.getAttribute("X-real-ip")。但是如果中间经过N次代理过来的请求,X-real-ip就只能获得到前一层代理的IP(10.6.61.14)了,下面是我的解决方案:



红色部分IP是使用X-Forwarded-For(简称XFF头)获取的:,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项(没有经过的获取为空)标准格式如下:
X-Forwarded-For: client1, proxy1, proxy2
从标准格式可以看出,X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,剩下的就是曾经经过的代理或负载均衡的ip地址,经过几个就会出现几个。
我的Nginx具体配置如下:


关于参数含义:
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
意思是
增加(不是覆盖一个$proxy_add_x_forwarded_for到X-Forwarded-For里去。
举个例子,有一个web应用,在它之前通过了两个nginx转发。在第一台nginx中,使用
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
现在的$proxy_add_x_forwarded_for变量的"X-Forwarded-For"部分是空的,所以只有$remote_addr,而$remote_addr的值是用户的ip,于是赋值以后,X-Forwarded-For变量的值就是用户的真实的ip地址了。
到了第二台nginx,使用
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
现在的$proxy_add_x_forwarded_for变量,X-Forwarded-For部分包含的是用户的真实ip,$remote_addr部分的值是上一台nginx的ip地址,于是通过这个赋值以后现在的X-Forwarded-For的值就变成了“用户的真实ip,第一台nginx的ip”。

所以我在程序中使用request.getHeader("x-forwarded-for").toString().split(",")[0]就能获取到访问客户的真实IP,不用担心前面有几层转发啦。

posted @ 2018-01-23 11:22 杨军威 阅读(232) | 评论 (0)编辑 收藏

oracle导出数据

exp qq/1qqq    BUFFER=640000 FILE=/oracleq/appq/oracleq/newq.DMP OWNER=qq

posted @ 2018-01-17 10:56 杨军威 阅读(105) | 评论 (0)编辑 收藏

ngnix根据客户端不同的url分发请求

  upstream tomcat_server { server IP地址:端口; }
upstream authority_server { server IP地址:端口; }
if ( $request_uri ~ "^\/itoo-basic" )
{
proxy_pass   http://tomcat_server;
}
if ( $request_uri ~ "^\/itoo-authority" )
{
proxy_pass   http://authority_server;
}

posted @ 2018-01-16 11:02 杨军威 阅读(268) | 评论 (0)编辑 收藏

linux imp 导入oracle数据

posted @ 2017-12-19 13:13 杨军威 阅读(127) | 评论 (0)编辑 收藏

linux tomcat startup 禁止

在Tomcat的bin目录中执行chmod u+x *.sh

posted @ 2017-12-19 11:09 杨军威 阅读(97) | 评论 (0)编辑 收藏

linux nginx 安装

     摘要: 二、安装Nginx1、上传nginx-0.7.63.tar.gz至/usr/local 2、执行如下命令解压nginx:1.#cd /usr/local2.#tar zxvf  nginx-0.7.63.tar.gz3、编译安装nginx1.#cd nginx-0.7.632.#./configure --with-http_stub_status_module --with-...  阅读全文

posted @ 2017-12-19 10:03 杨军威 阅读(98) | 评论 (0)编辑 收藏

oracle创建删除表空间、用户、数据导入导出等常用sql语句

//连接
connect /as sysdba

1.创建表空间和用户并为用户指定表空间

//创建临时表空间
create temporary tablespace user_temp tempfile 'D:oracleoradatauser_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; 

(注:user_temp是临时表空间的名称。) 

//创建数据表空间lportal
create tablespace lportal logging datafile 'D:oracleoradatalportal.dbf' size 100m autoextend on next 50m extent management local;

(注:lportal是数据表空间的名称。) 

//创建用户lportal并指定表空间
create user lportal identified by lportal default tablespace lportal_db temporary tablespace user_temp;

(注:第一个lportal是用户名,第二个lportal是密码;lportal_db是数据表空间名称,user_temp是临时表空间名称。)

//为lportal用户授权
grant connect,resource,dba to lportal;

 

2.数据备份(导入导出数据)

//导入数据
imp lportal/lportal@orcl file=d:lportal20121109.dmp full=Y
//导出数据
exp lportal/lportal@orcl file=D:lportal20121109.dmp
(数据的导入与导出,在进入到黑窗口后直接输入上列语句,不需要进入sqlplus)

 

3.删除用户及表空间
//删除用户以及用户所有的对象
drop user lportal cascade;

//删除表空间与表空间文件(注意:如果在创建表空间的时候带有双引号,则删除的时候也要带上)
DROP TABLESPACE "stu_new" INCLUDING CONTENTS AND DATAFILES;
前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除
drop tablespace zfmi including contents and datafiles cascade onstraints;
//including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数
//including datafiles 删除表空间中的数据文件
//cascade constraints 同时删除tablespace中表的外键参照

 

4.查询表空间和查询用户
//查询所有表空间名称
select tablespace_name from dba_tablespaces;

//查看表空间的名称和状态
select tablespace_name,status from dba_tablespaces;

//查询当前表空间属性
select * from dba_tablespaces where tablespace_name='mtgyd';


//查询所有用户
select username from dba_users;

posted @ 2017-12-18 16:08 杨军威 阅读(154) | 评论 (0)编辑 收藏

linux下创建表空间,用户和赋予权限

1、在某一目录下面创建存放表空间的目录,并赋予权限   chmod 777 文件     或者 sudo chmod -R 777  文件
2、创建临时表空间  create temporary tablespace USER_TEMP tempfile '/app1/orac1lenamespase/newn1amespase/USER_TEMP1.bdf' size 5120m reuse autoextend on next 20m maxsize unlimited; 
3.创建表空间    create tablespace ZHFXBEMS1 datafile '/app1/ora1clenamespase/newnames1pase/ZHFXBEMS1.dbf' size 20480M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);
4、创建用户和指定使用的表空间    create user qqidentified by 1 default tablespace ZHFXBEMSq temporary tablespace USER_TEMPq;
5.赋予权限
grant dba to qq;
grant connect,resource to qq;
grant select any table to qq;
grant delete any table to qq;
grant update any table to qq;
grant insert any table to qq;

posted @ 2017-12-15 11:57 杨军威 阅读(313) | 评论 (0)编辑 收藏

多线程数据独立保存

当多线程访问资源时,每条线程的数据变量都是不一样的,线程间的数据需要做到独立,不能相互共享,例如,数据库中常见的转账业务,两次转出和转入操作,不能共享数据,还要注意线程安全。
package com.yjw.thread;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class ThreadScopeShareData {
static class A{
public void get(){
System.out.println(" A="+Thread.currentThread().getName()+",data="+map.get(Thread.currentThread()));
}
}
static class B{
public void get(){
System.out.println(" B="+Thread.currentThread().getName()+",data="+map.get(Thread.currentThread()));
}
}
static Map<Thread, Integer> map = new HashMap<Thread, Integer>();
public static void main(String[] args) {
for (int i = 0; i < 2; i++) {
new Thread(new Runnable() {
public void run() {
int data=new Random().nextInt();
System.out.println(Thread.currentThread().getName()+",data="+data);
map.put(Thread.currentThread(), data);
new A().get();new B().get();
}
}).start();
}
}
}

posted @ 2017-12-12 11:10 杨军威 阅读(309) | 评论 (0)编辑 收藏

springmvc 添加mvc:resources 请求controller失败

当使用了mvc:resources标签后,必须使用 <mvc:annotation-driven/>标签,就不会请求controller失败了。

posted @ 2017-12-11 16:21 杨军威 阅读(205) | 评论 (0)编辑 收藏

仅列出标题
共43页: First 上一页 3 4 5 6 7 8 9 10 11 下一页 Last 

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜